views:

78

answers:

2

We have a .NET 2.0 Remoting server running in Single-Call mode under IIS7. It has two APIs, say:

  1. DoLongRunningCalculation() - has a lot of database requests and can take a long time to execute.
  2. HelloWorld() - just returns "Hello World".

We tried to stress test the remoting server (on a Windows 7 machine) in a worst case scenario by bombarding it randomly with the two API calls and found that if we go beyond 10 client requests, the HelloWorld response (which generally is less than 0.1 sec) starts taking longer and longer going into many seconds. Our objective is that we dont want to have the long-running remoting calls to block the short-running calls. Here are the performance counters for ASP.NET v2.0.50727 if we have 20 client threads running:

  1. Requests Queued: 0
  2. Requests Executing: (Max:10)
  3. Worker Processes Running: 0
  4. Pipeline Instance Mode: (Max:10)
  5. Requests in Application Queue: 0

We've tried setting maxConcurrentRequestsPerCPU to "5000" in registry as per Thomas's blog: ASP.NET Thread Usage on IIS 7.0 and 6.0 but it hasn't helped. Based on the above data, it appears that the number of concurrent requests is stuck at 10.

So, the question is:

  1. How do we go about increasing the concurrent requests? The main objective is that we don't want to have the long-running remoting calls to block the short-running calls.
  2. Why are the Max Requests Executing always stuck at 10?

Thanks in advance.

A: 

Don't suppose you were able to work this one out yet? I'm experiencing the exact same scenario, and following the instructions in that blog haven't seemed to have any effect on it..

Chris
This should be a comment. You can add a comment to the question by clicking the `add comment` link under the question, and delete this answer by clicking the `delete` link just above this comment.
Robert Harvey
A: 

Windows 7 has a 20 inbound connection limit. XP and prior was limited to 10 (not sure about Vista). This is likely the cause of your drop in performance. Try testing on an actual server OS that doesn't have an arbitrary connection limit.

Chris
Actually, what we observed is a little different. The connection limit on Windows 7 seemed to be 10; because when we went beyond that, we saw a deterioration in performance. You are right, on a windows2008 server, the performance was better but we haven't been able to quantify it yet.
hpatil
Actually, the 20 connection limit is imposed by Windows. IIS itself still has a 10 connection limit, which explains your results. The 10 connection limit is imposed by all IIS instances running on non-server operating systems (to avoid people trying to serve sites without purchasing a server OS)
Chris