2010-04-18 56 views
0

我有一個使用MS SQL Server 2005的ASP.NET web應用程序(.NET 2008)。我想提高網站的性能。有沒有人知道一篇文章包含一步一步地在SQL(索引等)和代碼中執行該操作的步驟?如何提高我的Web應用程序的性能?

+0

我認爲,在表現中,知道自己在哪裏放慢速度,或者換句話說,在哪裏可以贏得更多表現是非常重要的。 你在js,asp.net,sql server有問題嗎?他們是不同的世界,需要不同的知識。 – 2010-04-18 08:30:35

+0

ok,codeka和pablocastilla,讓我們從sql server開始,因爲我認爲緩慢的主要問題在於SQL – RMohammed 2010-04-18 08:39:23

回答

2

我認爲,我們可以在這裏做的最好的就是給你一些指點:

  • 查詢較少的數據從SQL Server(高速緩存,適當的查詢過濾器)
  • 寫出更好的查詢(索引,聯接,分頁等)
  • 儘量減少任何不適當的堵塞等不同請求之間的鎖
  • 確保會話狀態還沒有規模爆炸
  • 使用更大的金屬/金屬多
  • 使用合適的循環碼等

但要強調;從這裏什麼都是猜測。您需要找到通用區域,然後進行更多配置以隔離特定的區域;但通過查看啓動:Web服務器和SQL服務器的Web服務器和客戶端之間

  • 網絡跟蹤(雙向)
  • 緩存/狀態服務器,如果之間

    • SQL跟蹤適當
    • CPU /網絡服務器上的內存利用率
  • +0

    謝謝Marc, 等待更多,你給我一個好的開始,但如果你給我的細節在這一些點甚至是一些鏈接中,我會更加感謝你 – RMohammed 2010-04-18 08:43:28

    +0

    +1對於web性能問題的極大提示 – wonde 2010-04-19 01:45:45

    1

    我認爲首先你必須找到你的瓶頸,然後嘗試改進這些。

    這可以幫助你確切地執行你有嚴重問題的地方。

    此外,您需要改進與數據庫的連接。例如使用Lazy,Singletone模式,並創建批量請求而不是單個請求。 它可以幫助您減少數據庫連接。

    檢查您的緩存和合適的循環結構。

    另一件事是使用合適的類型,forexample如果你需要INT DONOT建立一個長期和等

    末YPU可以使用一些事件探查器(特別是在SQL)andcheckif實現你的查詢,以及可能的。

    4

    性能調整是一個非常具體的過程。我不知道任何直接討論如何實現這個目標的文章,但是當我需要提高應用程序/網站的性能時,我可以簡要概述一下我遵循的步驟。

    1. 簡介。

      首先收集性能數據。在調整過程結束時,您需要一些數字進行比較,才能真正證明您有所作爲。這意味着您需要選擇一些特定的流程來監控並記錄其性能和吞吐量。

      例如,在您的網站上,您可能會記錄登錄需要多長時間。你需要保持這個非常窄。選擇一個您想記錄並計時的特定操作。 (使用一個工具來完成時間安排,或者在你的應用程序中添加一些Stopwatch代碼來報告時間,並且不要只運行一次,多次運行它,儘量確保你知道設置的所有環境,以便複製

      儘量讓它儘可能接近您的生產環境,確保您的代碼是在發佈模式下編譯的,並且在真正的單獨服務器上運行,而不僅僅是一個盒子上的所有服務器等。

    2. 儀器。

      現在你知道你想要什麼樣的行動來改善,和你有一個目標時間打,你可以檢測你自己的代碼,這意味着(手動或自動)額外注入每次調用方法的代碼,或每行記錄調用堆棧下的時間和/或內存使用情況。

      他們有很多工具可以幫助你實現這一點並自動化一些工具。 (Microsoft's CLR profiler(免費),Redgate - Ants(商業版),視覺工作室的高版本內置了東西,而loads more)但是,您不必使用自動工具,只需使用Stopwatch類來定時你的代碼。你要找的是一個瓶頸。可能的原因是,你會發現很大一部分時間花費在很少的代碼中。

    3. Tune。

      現在你有一些時間數據,你可以開始調整。

      這裏有兩種方法需要考慮。首先,從整體角度來看。考慮是否需要重新設計整個調用堆棧。你是否不必要地重複一些事情?或者你只是在做一些你不需要的東西?其次,現在你已經知道你的瓶頸在哪裏,你可以試着想辦法改進這一點代碼。我不能在這裏提供很多建議,因爲這取決於你的瓶頸是什麼,但只是看看優化它。也許你需要緩存數據,所以你不必循環兩次。或者對SQL調用進行分批處理,這樣你就可以只做一個。或者加緊查詢過濾器,以便返回更少的數據。

    4. 重新配置文件。

      這是人們經常錯過的最重要的一步。一旦你調整了你的代碼,你絕對需要重新配置它在你運行你的初始分析的環境。它是很常見的做小調整,你認爲可能會提高性能,實際上最終會降級它,因爲CLR處理某些事情的一些未知方式。這在管理語言中更爲常見,因爲您通常不知道封面中究竟發生了什麼。

    現在只需要重複。

    如果您可能經常進行性能調整,我發現可以運行一整套自動化性能測試來檢查各種不同活動的性能和吞吐量。這樣我可以在每個版本中運行這些版本,並記錄每個版本的性能變化。這也意味着我可以檢查一下,在性能調優會議之後,我知道我還沒有使其他一些領域的表現更糟糕。

    當您分析時,不要總是考慮運行單個操作的時間。還要考慮在負載情況下進行性能分析,並有大量用戶登錄。有時只有一個用戶連接時,應用程序性能會很好,但是當他們碰到一定數量的用戶時,整個事情就會停止。也許是因爲他們正在花費更多的時間上下文切換或將內存換入和換出磁盤。如果你想提高吞吐量,你需要弄清楚是什麼導致了吞吐量的限制。

    最後。看看這個巨大的MSDN文章Improving .NET Application Performance and Scalability。具體來說,你可能想看看chapter 6chapter 17

    +0

    非常感謝你,simon,我在仔細閱讀你的回答:) – RMohammed 2010-04-18 09:23:58

    相關問題