2008-09-12 76 views
0

我正在測試.NET Web應用程序的壓力。我這樣做的原因有兩個:我想看看真實世界中的性能如何,並確保我們在測試期間沒有錯過任何問題。我們在應用程序中使用了30個併發用戶,就像他們在正常工作過程中那樣。大多數用戶有多個應用程序窗口打開。SqlServer Express性能低下

  • 10用戶:不壞
  • 20用戶:放慢
  • 30用戶:非常,非常緩慢,但沒有超時

它裝載在生產服務器上。它是一臺配備2.66G Hz Xeon處理器和2 GB RAM的虛擬服務器。我們正在使用Win2K3 SP2。我們加載了.NET 1.1和2.0並使用了SQLExpress SP1。

我們重新檢查了所有表格後的索引,它們都是應該的。

我們應該如何提高應用程序的性能?

回答

2

這只是我想到的,但請檢查一下當有20多個用戶時,SQL Server使用多少內存--Express版本的侷限之一是它是limited to 1GB of RAM。所以這可能只是一個簡單的問題,由於Express的限制,服務器沒有足夠的可用內存。

2
  1. 根據應用程序的運行方式,您可能會遇到併發問題。嘗試使用「nolock」關鍵字執行讀取操作。

  2. 嘗試爲列添加表別名(並避免使用SELECT *),這有助於MSSQL,因爲它不必「猜測」列的來源。

  3. 如果您尚未遷移到SPROC,則允許MSSQL更好地爲給定查詢的正常結果集編制索引數據。

  4. 請按照SPROCS的執行計劃進行操作,確保它們使用的是您認爲它們的索引。

  5. 對您的數據庫運行跟蹤來查看傳入請求的樣子。您可能會注意到特定的SPROC正在反覆運行:如果可能,通常會將響應緩存在客戶端上。 (查找列表等)

+0

我們非常meticilous與NOLOCK,我們使用視圖來讀取數據別名和SPROCS來處理CRUD以及SubSonic。 – 2008-09-12 14:19:02

+0

我不明白爲什麼這是被拒絕的。所有這些建議都是相關的 – rpetrich 2008-09-12 14:36:40

+0

我同意。即使這裏不完全相關,它們也是有效的,並且可能對其他人有用。投票。 – 2008-09-12 14:38:20

0

更新:看起來像SQL Server Express的是沒有問題的,因爲他們在以前版本的應用程序中使用相同的產品。我認爲你的下一步是找出瓶頸。如果您確定它在數據庫層中,我會建議您使用Profiler跟蹤並降低最昂貴查詢的執行時間。

這是我用於從SQL Server動態管理視圖(DMV)和相關的動態管理功能(DMF)收集統計信息的另一個鏈接。不確定我們是否可以在Express版本中使用。 Uncover Hidden Data to Optimize Application Performance


您是否將SQL Server Express用於Web應用程序?據我所知,它對生產部署有一些限制。

SQL Server Express是免費的,可以由ISV重新分配(以協議爲準)。 SQL Server Express是非常適合學習和構建桌面和小型服務器應用程序。此版本是獨立軟件供應商,非專業開發人員和業餘愛好者構建客戶端應用程序的最佳選擇。如果您需要更高級的數據庫功能,則可以將SQL Server Express無縫升級到更復雜的SQL Server版本。

0

我會檢查虛擬服務器上的磁盤性能。如果這是其中一個問題,我建議將數據庫放在一個單獨的主軸上。

更新:移動到單獨的主軸或升級SQL Server版本,正如Gulzar恰當的建議。

0

確保您在檢索數據後關閉連接。

0

運行SQL事件探查器查看發送到數據庫的查詢。尋找查詢是:

  • 不佳構建

    • 返回了太多的數據
    • 正在執行的次數太多