2012-12-17 57 views
2

我有一個網絡應用程序,由於在低流量下的低請求/秒而受到損害。平均請求執行時間大約爲每頁200毫秒。如何增加Asp.NET的持續執行時間的請求數/秒?

爲了模擬環境,我使用一行代碼在Asp.NET 4.0 Web應用程序中創建了一個超級簡單的測試頁面。

Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load 
    System.Threading.Thread.Sleep(200) 
End Sub 

我把它發佈到與4核CPU,8GB內存,Win7企業64位的服務器,全新安裝。

然後我創建了一個超級簡單的控制檯應用程序,它會在這個測試頁上加載一些負載。

For i = 1 To 100 
     For j = 1 To 100 
      Dim client = New System.Net.WebClient 

      client.DownloadStringAsync(New Uri(address)) 
     Next 
     Threading.Thread.Sleep(1000) 
    Next 

我打開性能監視器並觀察請求/秒。無論我嘗試如何增加它,它總是50。所有的硬件使用情況(CPU,內存)都非常低,所以必須有足夠的空間來增加它。

我改變了machine.config中的processModel如下,沒有運氣。

<processModel autoConfig="false" maxWorkerThreads="1000" maxIoThreads="1000" minWorkerThreads="500" minIoThreads="500" /> 

那麼,我需要做什麼來利用我的完整硬件,並增加每秒處理的請求?

+0

您需要在需要處理太多時間的頁面上禁用會話 - 或者下載/上傳也需要一些時間。 – Aristos

+0

@Aristos會話被禁用,所有不必要的httpmodules已被刪除,如會話,windows認證,passportauthentication,urlauthorization,文件授權等。Web服務器和控制檯應用程序在同一網絡上。測試環境只是一個空的Asp.NET Web應用程序,其中只有一個測試頁面。 – sspekinc

+0

好的,那麼延遲在哪裏 - 你知道什麼是延遲你的網頁? – Aristos

回答

-1

如果您只在服務器端使用單線程,則每秒會得到1000/200 = 5個請求。但是你得到了50.所以看起來服務器允許你有多個線程,只是沒有足夠的線程。

或者您的客戶端應用程序未啓動足夠的線程以最大化服務器。這裏問題的一部分是你正在同時測試兩個應用程序。

對此的一個解決方案是使用久經考驗的網絡性能工具。這裏有一個SO一個問題,會給你一些選項有:

ASP.NET Stress Testing

一旦你已經確定,它實際上是在你的服務器端應用程序這就是問題所在,讓我們知道,我們可以進一步調查。

相關問題