2011-11-04 99 views
3

我們有沒有從代碼任何明確的多線程香草ASP.NET應用程序(ASP.NET Web表單,實體框架,SQL Server 2005中)。它已部署在交錯的環境中(OS - Windows Server 2008 R2 64位,CPU - Intel Xeon E5507 @ 2.27 GHz,2.34 GHz,RAM - 7.5 GB)。該環境由Web,數據庫和報告服務器組成,每個服務器都是雲中的獨立實例(Amazon EC2)。當併發測試,觀測爲下:ASP.NET應用程序和CPU使用率

1用戶 - CPU使用率〜25%,反應時間2-4秒

2用戶 - CPU使用率40-50%,反應時間3-6秒

4用戶 - CPU使用率60-80%,反應時間4-8秒

8用戶 - CPU使用率80-100%,響應時間4-10秒

中號y的問題是:

  1. CPU使用率是否相對於no。的併發用戶?響應時間可能在很大程度上有所不同,如上述觀察所示?

  2. 如從上面觀察,CPU將刷爆當併發用戶數是10〜。在響應時間急劇增加的情況下,CPU是否應該無縫處理更多的併發用戶?在理想情況下,如果是基本的ASP.NET應用程序,CPU可以處理多少個併發用戶?

  3. 如果是在上面的問題,什麼可以在這裏是問題的高CPU /響應時間長?我們應該如何進行有效的調試以找出代碼/ IIS設置中的瓶頸?

PS:其已經被改變的IIS設置(即在machine.config中):

maxWorkerThreads = 100 
    MinWorkerThreads = 50 
    maxIOThreads = 100 
    minIOThreads = 50 
    minFreeThreads = 176   
    maxConnections = 100 

回答

1

高CPU使用率可以由各種各樣的原因引起。找出發生了什麼事情最簡單的方法是使用分析工具:

螞蟻內存分析器:
http://www.red-gate.com/products/dotnet-development/ants-memory-profiler/

螞蟻性能分析器:
http://www.red-gate.com/products/dotnet-development/ants-performance-profiler/

他們是很實惠,但你應該能夠使用試用版不受限制地工作。這些工具在識別瓶頸和內存泄漏方面做得非常出色。