0

Scenario: ASP.NET MVC wep app sitting on my local machine (Vista Ultimate, IIS 7.0), nothing going on except one user (me) logged in and viewing an index page. The page includes 9 dynamic images drawn from the underlying DB and returned from a controller action. I have got the actual processing time for these images down to 15ms each. Turn on Firebug and watch the page load. What I see is 9 requests for images firing off together – no surprise – but four come back to me almost immediately; two more after 0.5s; another after 1s; then at 1.5s and 2s. Logging on the server side suggests the individual responses are still only taking 15ms. So it appears IIS is queueing things up into 500ms chunks. (Repeating the experiment produces different results, but each time the images return in similar blocks – you might get three in the first group, then three at 0.5s, two at 1s etc, for example – and it’s always at 500ms intervals, not anything else.) It’s also repeatable cross-browser, and it’s not repeatable with other forms of content.

I haven't found any particular mention of this problem out there, so I'm sort of assuming it's not an IIS bug, so is it:

i) IIS on desktop OSs deliberately does it, to make you use server OSs in production? ii) There is some magical setting that has eluded me for as long as I’ve known IIS? iii) Something peculiar to MVC or SQL Server 2008? or something else?

  • The same issue happens for us using .php, .aspx and other scripts. There is 500ms delay for each sub-request on desktop IIS even on server IIS 7.5 (WinServer 2008 R2) when there are several more sub-requests. We didn't find any mention of this feature. Maybe some kind of attack prevention? – Jakub Míšek Apr 15 '11 at 10:27
  • Hi I have come across similar problem and the solution seems to be this one posted in the link :) http://stackoverflow.com/questions/7507389/iis-delays-a-lot-between-each-response-with-async-requests –  Dec 07 '11 at 12:00

1 Answers1

0

It could be that you are on a desktop OS and the garbage collector kicks in trying to clean up after your image generation between each request.

But to get a clear picture about where time is spent try to enable IIS Failed Request Tracing (status code 200) and see what time is spent on in each request. Furthermore you can look on .NET performancecounters for GC and investigate the % time spent in GC and GC induced to see if my suspecion from above is correct.