I have a web application which is suffering because of low requests/sec under moderate traffic. The average request execution time is around 200ms per page.
To simulate the environment, I created a super simple test page in an Asp.NET 4.0 web application with one line of code.
Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
System.Threading.Thread.Sleep(200)
End Sub
I published it to a server with 4 core cpu, 8GB RAM, Win7 Enterprise 64 bit, clean install.
Then I created a super simple console application which will put some load on this test page.
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
I opened the performance monitor and observed Requests/sec. It was always 50 no matter what I tried to do to increase it. All the hardware usage (CPU, memory) was very low, so there must be enough room to increase it.
I changed the processModel in the machine.config as below with no luck.
<processModel autoConfig="false" maxWorkerThreads="1000" maxIoThreads="1000" minWorkerThreads="500" minIoThreads="500" />
So, what I need to do to utilize my full hardware and increase the processed requests per second?