總結:今天在MSN Group裡面和一些朋友談ASP.net程式的效能最佳化

來源:互聯網
上載者:User

今天在MSN Group裡面和一些朋友談ASP.net程式的效能最佳化。
現在來總結一下最佳化的手段:
1.資料庫最佳化,包括表結構最佳化、索引最佳化、SQL語句最佳化、預存程序最佳化
2.最佳化ViewState
3.使用緩衝
4.產生靜態頁面(主要針對互動性不是很強的資訊發布系統前端)
5.使用前置的IIS/Apache來處理對靜態頁面、圖片、js檔案的請求
6.最佳化演算法
7.歡迎大家補充

對於效能調優,幾乎所有專家的建議都是:如果沒有確切的效能測量,就不要進行效能調優。沒有基準效能測試的調優基本上除了讓系統的代碼變的亂七八糟之外不會有其他好處,你費盡心思把一個演算法從0.1秒提高到0.01秒得到的效果往往會被一個糟糕的select語句徹底淹沒。

所以,前面的幾種手段不是萬靈藥,要調優,首先要瞭解系統慢在哪兒。千萬不能病急亂投醫。下面的內容來自我個人的工作經驗,不是所有系統都可以套用的,切記切記!!!!
下面我們來分析一下這四種調優手段:

對於OA/業務管理系統類型應用來說,資料庫最佳化往往是關鍵點,原因有幾點:
1.對資料庫的CRUD是最這些系統最常見的操作。
2.對資料庫系統的操作往往會引起磁碟I/O(因為資料庫檔案和日誌都是儲存在磁碟的)
3.應用對資料庫系統的操作往往是跨進程的甚至跨機器的。(磁碟I/O+網路I/O,CPU再快記憶體再多都鞭長莫及了吧)
所以這些對資料庫的操作往往是整個系統的效能瓶頸。

那麼,知道了這個大方向,如何知道到底是那些SQL或者預存程序慢呢?這個就需要結合資料庫的Profiler

對於SQL Server可以看看這篇文章
http://www.microsoft.com/china/msdn/library/data/sqlserver/Profiler.mspx?mfr=true

對於Oracle可以看看這篇文章
http://www.javaeye.com/post/117389

2,ViewState,這個咚咚體積比較大,對於internet應用來說,會有一定的影響。關於對它的最佳化,園子裡面已經有的講了,大家自己搜尋一下吧。

3.使用緩衝
這個我的看法和MSN Group裡面的幾個朋友不是很一致。MSN Group裡面有個朋友認為緩衝可以是一組靜態變數,或者是一個緩衝控制器控制的一些變數。我個人認為,這樣的緩衝在單伺服器環境下也許有不錯的效能,在多伺服器環境下,這樣的緩衝反而會成為效能瓶頸,因為應用程式或者緩衝控制器需要小心的保證多個進程的緩衝內容一致。這個過程使得程式的延展性大大降低。考慮一下100台伺服器的Web Farm,一個進程中的緩衝修改,需要通知並且確認剩下99個伺服器都正確的更改了,這是一件多麼可怕的事情。
對於這塊,memcache是一個比較不錯的解決方案,著名的wiki產品mediawiki就使用了它來做快取服務器。memcache也有.net的client api。

4.不是很瞭解,請高手補充

5.網上很多介紹了,尤其是java那邊,apache搭配tomcat有很多介紹。自己google下咯。

6.這個最佳化最複雜,效果也許最不明顯,如果你一定要做,那就八仙過海,各顯神通吧。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.