none
Do IIS have some limits to serve number of concurrent requests

    Question

  • Hi,

    Till few days back, i was of the opinion that as long as i am increasing the number of CPU, memory, hard disk and network bandwidth for a server, IIS installed on it can serve any number of users.

    Now my opinion has got changed when somebody told me that IIS also has limitations( not theroritically but practically) in serving number of concurrent users/ requests.

    I got one article(http://www.eggheadcafe.com/articles/20050613.asp) for IIS6 and .Net 1.1 which says that IIS6 can only support 12 maximum concurrent connections for .net 1.1
    though this would depend on type of OS. So that means only 12 concurrent user requests can be served, whatever may be the hardware.

    Can somebody please give me any link which talks about IIS6.0 maximum limits for Windows 2003 and Windows 2008 for .Net 3.5 and .Net 4.0

    If you don't know this, then i think you should join me in searching for this data

    Cheers
    TicArch

     

    Friday, August 13, 2010 12:03 PM

All replies

  • The limitations depends on the operating system and not on IIS.

    Check this article on MSDN Blogs

    http://blogs.msdn.com/b/david.wang/archive/2006/04/12/howto-maximize-the-number-of-concurrent-connections-to-iis6.aspx

    • On Windows Server 2003 RTM x86, this comes out to around 8,700
    • On Windows Server 2003 SP1, the limit has been removed
    • On Windows Server 2003 SP1 x64, since NPP is bound by available memory, you can increase concurrent connections by merely adding more RAM. To give a sense of scope - I have seen 50K+ concurrent connections to IIS6 on WS03SP1 x64 with 4GB RAM


    Ali Hamdar (alihamdar.com)
    Friday, August 13, 2010 12:13 PM
  • Hi Ali,

    Thanks for your response and recommended article.

    However i am still of the belief that IIS can't scale unlimited if i increase CPU ,memory and network.There should be some practical limitation to it, which i can suspect but don't know exactly.

    As Microsoft book "Improving .NET Application Performance and Scalability " sets its limits to 12 concurrent connections per CPU core.

    Have a look at http://blogs.msdn.com/b/tmarq/archive/2007/07/21/asp-net-thread-usage-on-iis-7-0-and-6-0.aspx . This blog is updated for .Net 3.5 .This is its recommendation

    <system.web>
            <applicationPool maxConcurrentRequestsPerCPU="12" maxConcurrentThreadsPerCPU="0" requestQueueLimit="5000"/>
        </system.web>

     

     

    Even if we use Windows 2008 server, i am pretty sure that IIS server will queue the requests after a limit(say after 5000 concurrent users). This happens in Java world also where we have tough application servers like weblogic, websphere etc.These server also do have a limit after which we go to next physical server for better results.

    I hope some body would be able to throw light on this based on their experience.

    Cheers

    TicArch

     

    • Edited by TicArch Saturday, August 14, 2010 12:16 PM addition of some more data
    Saturday, August 14, 2010 12:04 PM
  • I have checked this on 2008, this does not work although it says n number of concurrent connections are allowed. The IIS actually gets jammed if connections exceed.

     

     

     

    Wednesday, November 09, 2011 12:22 PM
  •  

    "I got one article(http://www.eggheadcafe.com/articles/20050613.asp) for IIS6 and .Net 1.1 which says that IIS6 can only support 12 maximum concurrent connections for .net 1.1
    though this would depend on type of OS. So that means only 12 concurrent user requests can be served, whatever may be the hardware."

    As i know, Max Concurent Request is calculated by following formula

    (MaxWorkerThreads * no Of CPU) – (MinFreeThreads * no Of CPU)

    This is 12 by default on a single-proc machine.

    So performance does improve by adding more CORE/CPU(hardware) to your system

    So If you have Two Processor with below configuration

    maxWorkerThreads               100

    minFreeThreads                      88

    Than MaxConcurent Request would be

    (100*2) - (88*2) =24 Concurent Request

    If you add two more Core than

    Than MaxConcurent Request would be

    (100*4) - (88*4) =48 Concurent Request.

     


    Lingaraj Mishra
    Thursday, November 10, 2011 12:17 PM
  • However i am still of the belief that IIS can't scale unlimited if i increase CPU ,memory and network.There should be some practical limitation to it, which i can suspect but don't know exactly.

    Yes it can. This ceiling of sorts native to a single server is why we create a Web Farm. The answer is to not try and place all of the eggs (or websites) into 1 basket (or server), but rather over many servers thus providing the scalability you are trying to achieve. In this manner you do not have to try and find that 'ultimate' hardware configuration that will support a huge number of requests. So instead of scaling vertically (expanding a single server), you need to think horizontally by leveraging a web farm with a load balancer.

    The following information will help:

    Web Farms IIS Forums:
    http://forums.iis.net/1036.aspx

    Network Load Balancing Technical Overview:
    http://technet.microsoft.com/en-us/library/bb742455.aspx

    Ultimately you need to look to using a web farm to host sites that are getting a large number of requests. In this manner, whatever you determine a single server's maximum concurrent requests are, you can now multiply that by the number of servers in the web farm and providing that scalability you require.

    Hope this helps!

    Tuesday, November 15, 2011 6:23 PM
  • Of course there is some sort of upper limit of how much traffic one sever can handle.

    I don't know what it is and I've never had to for that matter.

    A couple of mid spec servers are cheaper than one high spec server and you also get redundancy.

     

    Wednesday, November 16, 2011 9:00 AM
  • Hi Andy,

    I do understand that nobody can give any upper limit but do you agree to any ballpark figure near to 12 concurrent connections for a single processor web server as suggested in many replies above. My gut feeling is that this figure is near to the upper limit.

    I checked once on a dual processor server using simulation from visual studio test edition that when i increase the concurrent requests/sec above 10-12, the throughput was going down though the other server parameters like CPU utilisation, memory were under control.

    Please share from your architect community exp.

    Cheers

    TicArch


    • Edited by TicArch Friday, November 25, 2011 5:54 AM
    Friday, November 25, 2011 5:53 AM
  • Pprobably about right.

    We've been doing some testing just recently and you might be interested in the method.

    Each developer has a bat file with a number of instructions to start ie:

    start /d "C:\Program Files\Internet Explorer" IEXPLORE.EXE http://xxx-vm/xxxxx/xxx.aspx

    We tried first with 6 developers and 5 of those.

    Everyone clicks on their bat file simultaneously.

    Our application is silverlight and there are a shed load of services involved along with two pretty large xap files.  Although the xap files will of course cache per user. 

    Anyhow, it just didn't work the first time but provided some useful info on what would break under stress.

    Maybe you want to  give that sort of approach a go.

    Friday, November 25, 2011 8:10 AM
  • Great way of checking load without actually opening IE and using an load testing tool.

    I didn't got when you says" We tried first with 6 developers and 5 of those.".

    Do you mean total 30 number of hits.

    Can you please share the results if you have found any success with some info on type of server.

    Also would you like to comment on Lingaraj comments given in this thread earlier.

    Cheers

    TicArch

     

     

     

    • Edited by TicArch Tuesday, November 29, 2011 10:51 AM Update
    Tuesday, November 29, 2011 5:43 AM
  • Yep, 6 developers each clicking on a bat file with 5 lines in it = 30 total.

    Our test vm web server didn't like it at all.

    BUT the problem wasn't just as simple as so many concurrent connections.

    I think it's much more complicated than saying we have 4 of these and 3 of these so the answer is 15.

     

    But anyhow, in our tests a couple of developers would see the application spin up OK whilst the other 4 just saw it crash and burn.

    This is silverlight in an asp.net page with a load of wcf services.

    We saw some critical services timing out and the processor on the web vm maxed.

     

    If we spaced it out just a little then everyone got on.

     

     

    Tuesday, November 29, 2011 5:47 PM