IIS and possible load
-
I don't know if this is right place to ask but I did not saw any better. Maybe someone with high demand web sites experience can tell me where is factor for concurrent connection to IIS, when it finally give up and fails? I read some time ago that on web there is 10k problem, when any HTTP server on the market cannot handle that. It is to much IMHO for corporate complex web apps with 3 tiers and high MSSQL usage. I have found that this is approximately 1000 connections at the same time, but it still seems like too much. I cannot imagine 1000 CRUD sqls on MSSQL. Usually for single HTTP requsts there is at least 3 sql requests, usually more. So how much connection web app would handle? 100? Seems more likely, but still in my prevoius work, there was application that had hard time providing for few dozens users and abviously they not always requaired server to do something. Any one has experience with the point when you start to need not 1 but 2 IIS servers?
No more Mister Nice Guy... >: |
-
I don't know if this is right place to ask but I did not saw any better. Maybe someone with high demand web sites experience can tell me where is factor for concurrent connection to IIS, when it finally give up and fails? I read some time ago that on web there is 10k problem, when any HTTP server on the market cannot handle that. It is to much IMHO for corporate complex web apps with 3 tiers and high MSSQL usage. I have found that this is approximately 1000 connections at the same time, but it still seems like too much. I cannot imagine 1000 CRUD sqls on MSSQL. Usually for single HTTP requsts there is at least 3 sql requests, usually more. So how much connection web app would handle? 100? Seems more likely, but still in my prevoius work, there was application that had hard time providing for few dozens users and abviously they not always requaired server to do something. Any one has experience with the point when you start to need not 1 but 2 IIS servers?
No more Mister Nice Guy... >: |
IIS is not "limited" to a certain number of connections, and SQL Server should not run out of them; there's a pool, and processing is halted until there's an item available from the pool. What caused this question? Performance-problems, or concurrency-problems?
Bastard Programmer from Hell :suss: If you can't read my code, try converting it here[^]
-
IIS is not "limited" to a certain number of connections, and SQL Server should not run out of them; there's a pool, and processing is halted until there's an item available from the pool. What caused this question? Performance-problems, or concurrency-problems?
Bastard Programmer from Hell :suss: If you can't read my code, try converting it here[^]
Primarily lack of knowledge about this topic. Secondly is requirement of new project: it has to be prepared to work on IIS web farm. I know that load balancing make sense with high-load applications. This is the reason for this question. Where is threshold for IIS when you have to switch from 1 web server to 2 or more to maintain high response times under high-load. I suspect this is dependent from complexity of code, so let's assume that it is complex and not optimal. Also I know that IIS and MSSQL have no hardcoded limit of, lets say 101 connections, and when 102 users decide to open page, it's gonna say to him: 'no way dude!' and gonna send HTTP Code - Service Unavailable. But there have be some kind of queue of connections and when this queue will be adding more requests then server can handle it's gonna shut itself down eventually, right? I don't want to know exact number as it is impossible without proper stress testing of whole environment, but just a factor should be enough. Is it 10? 100? 1000? 10k? I heard about 10k problem before but I don't know if this still an issue with all this xCore xGHz x0GB RAM server as we have now, and sources are dated: http://en.wikipedia.org/wiki/C10k_problem[^]
No more Mister Nice Guy... >: |
-
Primarily lack of knowledge about this topic. Secondly is requirement of new project: it has to be prepared to work on IIS web farm. I know that load balancing make sense with high-load applications. This is the reason for this question. Where is threshold for IIS when you have to switch from 1 web server to 2 or more to maintain high response times under high-load. I suspect this is dependent from complexity of code, so let's assume that it is complex and not optimal. Also I know that IIS and MSSQL have no hardcoded limit of, lets say 101 connections, and when 102 users decide to open page, it's gonna say to him: 'no way dude!' and gonna send HTTP Code - Service Unavailable. But there have be some kind of queue of connections and when this queue will be adding more requests then server can handle it's gonna shut itself down eventually, right? I don't want to know exact number as it is impossible without proper stress testing of whole environment, but just a factor should be enough. Is it 10? 100? 1000? 10k? I heard about 10k problem before but I don't know if this still an issue with all this xCore xGHz x0GB RAM server as we have now, and sources are dated: http://en.wikipedia.org/wiki/C10k_problem[^]
No more Mister Nice Guy... >: |
n.podbielski wrote:
I suspect this is dependent from complexity of code, so let's assume that it is complex and not optimal.
It's also dependent on the hardware (server and network), some IIS-settings, the "size" of your average file, and the general state of your servers' OS.
n.podbielski wrote:
But there have be some kind of queue of connections and when this queue will be adding more requests then server can handle it's gonna shut itself down eventually, right?
AFAIK, it doesn't shut down. If the client doesn't get a response within a set time, he'll get a time-out. Just like in a DDOS-attack, so to speak. The server processes what it can, within the limits of it's hardware.
n.podbielski wrote:
I heard about 10k problem
I didn't, so I'm gonna shut up and hope that some other reader can contribute some insight into the topic.
Bastard Programmer from Hell :suss: If you can't read my code, try converting it here[^]
-
Primarily lack of knowledge about this topic. Secondly is requirement of new project: it has to be prepared to work on IIS web farm. I know that load balancing make sense with high-load applications. This is the reason for this question. Where is threshold for IIS when you have to switch from 1 web server to 2 or more to maintain high response times under high-load. I suspect this is dependent from complexity of code, so let's assume that it is complex and not optimal. Also I know that IIS and MSSQL have no hardcoded limit of, lets say 101 connections, and when 102 users decide to open page, it's gonna say to him: 'no way dude!' and gonna send HTTP Code - Service Unavailable. But there have be some kind of queue of connections and when this queue will be adding more requests then server can handle it's gonna shut itself down eventually, right? I don't want to know exact number as it is impossible without proper stress testing of whole environment, but just a factor should be enough. Is it 10? 100? 1000? 10k? I heard about 10k problem before but I don't know if this still an issue with all this xCore xGHz x0GB RAM server as we have now, and sources are dated: http://en.wikipedia.org/wiki/C10k_problem[^]
No more Mister Nice Guy... >: |
Hi Please read this for IIS Connection : By default IIS7 has a limit of handling 12 concurrent requests per CPU and will queue requests above this limit. If you have some significant web load and many AJAX style requests to your server – this setting maybe very restrictive and it is hard to find out the root of the problem when you server performance is suddenly degraded. See this post to get the picture how it can cause performance issues on your server. Some relevant info about asp.net thread usage on IIS7 here: asp.net thread usage on IIS7 and IIS6 Thomas Marquardt advice is to change this default limit. Recommended settings: “All of this may be a little confusing, but for nearly everyone, my recommendation is that for ASP.NET 2.0 you should use the same settings as the defaults in ASP.NET v4.0; that is, set maxConcurrentRequestsPerCPU = “5000″ and maxConcurrentThreadsPerCPU=”0″. This is done by adding DWORD MaxConcurrentRequestsPerCPU to the registry under HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ASP.NET\2.0.50727.0 called MaxConcurrentRequestsPerCPU (DWORD). This key doesn’t exist by default. Or/and in aspnet.config section which overrides registry setting (also doesn’t exist by default) aspnet.config is here on windows 64bit: %windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet.config You need to add the following section under “configuration” section (here I used default values) – don’t forget change maxConcurrentRequestsPerCPU to 5000. < system.web> < applicationPool maxConcurrentRequestsPerCPU="12" maxConcurrentThreadsPerCPU="0" requestQueueLimit="5000" /> < /system.web>
-
Hi Please read this for IIS Connection : By default IIS7 has a limit of handling 12 concurrent requests per CPU and will queue requests above this limit. If you have some significant web load and many AJAX style requests to your server – this setting maybe very restrictive and it is hard to find out the root of the problem when you server performance is suddenly degraded. See this post to get the picture how it can cause performance issues on your server. Some relevant info about asp.net thread usage on IIS7 here: asp.net thread usage on IIS7 and IIS6 Thomas Marquardt advice is to change this default limit. Recommended settings: “All of this may be a little confusing, but for nearly everyone, my recommendation is that for ASP.NET 2.0 you should use the same settings as the defaults in ASP.NET v4.0; that is, set maxConcurrentRequestsPerCPU = “5000″ and maxConcurrentThreadsPerCPU=”0″. This is done by adding DWORD MaxConcurrentRequestsPerCPU to the registry under HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ASP.NET\2.0.50727.0 called MaxConcurrentRequestsPerCPU (DWORD). This key doesn’t exist by default. Or/and in aspnet.config section which overrides registry setting (also doesn’t exist by default) aspnet.config is here on windows 64bit: %windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet.config You need to add the following section under “configuration” section (here I used default values) – don’t forget change maxConcurrentRequestsPerCPU to 5000. < system.web> < applicationPool maxConcurrentRequestsPerCPU="12" maxConcurrentThreadsPerCPU="0" requestQueueLimit="5000" /> < /system.web>
Thx for the answer. Just have one question: your post seems like should have some links, urls inside but it does not. Did CP editor cut this off?
No more Mister Nice Guy... >: |