0

When a page is taking a long time to process in IIS, all other page requests coming in are delayed until the first one either times out, or responds.

This was brought to light by a 3rd party API having high response times. However, I can duplicate the issue by putting a Sleep in any page.

We are using DNN version 7.0.6

For Example:

The page http://www.website.com/foo.aspx has the code System.Threading.Thread.Sleep(10000); in the Page_Load.

While this page is sleeping, http://www.website.com/bar.aspx is requested. Bar.aspx (a page that usually responds right away) will not respond until foo.aspx has completed it's request.

From IIS Logs, you can see this process:

#Fields: date time cs-uri-stem sc-status sc-substatus sc-win32-status time-taken
2016-08-24 19:44:20 /bar.aspx 200 0 0 69
2016-08-24 19:44:24 /foo.aspx 200 0 0 10053
2016-08-24 19:44:24 /bar.aspx 200 0 0 9204
2016-08-24 19:44:26 /bar.aspx 200 0 0 91

I have tried adding additional worker processes, and the problem still exists.

I feel like I'm missing something simple. Am I just overlooking some fundamental way IIS or DNN works? Can anything be done to prevent this from happening?

Alex
  • 1
  • 1
    Probably session state contention. Try [this](http://stackoverflow.com/questions/4318965/asp-net-session-request-queuing) and see if it helps. – John Wu Aug 24 '16 at 19:56
  • 1
    This is default behavior of Asp.Net session state (which if you think about makes perfect sense for requests in same session)... Or you have code that waits on global lock... Hard to say without you debugging the issue and looking at where requests are waiting. – Alexei Levenkov Aug 24 '16 at 19:57
  • It is by design as IIS only has a pool of threads to process requests, and slow pages can exhaust that easily. Fix the slow pages, not IIS. – Lex Li Aug 25 '16 at 03:55
  • This has nothing to to with DNN itself. As others commented this is a IIS issue. Better to check which module is causing the problem. – VDWWD Aug 25 '16 at 10:34

0 Answers0