What is the IIS application pool size used for? Why is it important?
As noted in the comments, the question is ambiguous.
There is a Private Memory Limit (KB), which defines how large an application pool can grow in system RAM before it gets automatically recycled. For example, when you open Task Manager (taskmgr.exe), you'll see an instance of w3wp.exe running for each application pool. Add the Working Set column. I believe that corresponds to the Private Memory Limit setting.
There is a CPU Limit which dictates how much CPU an application pool is permitted to consume over a period of time. Its default is zero, meaning no limit.
There is a Queue Length setting which dictates how many simultaneous requests can be serviced before the server starts returning 503s. The default is 1000.
There is an Idle timeout, which defaults to 20 minutes. After 20 minutes of inactivity, the application pool stops. I always turn that off, as it takes time for the first request to process from an inactive application pool.
There is an ability to schedule a recycle at regular intervals or at one or more specific times. Perhaps an untimely recycle is interfering with a long-running operation, and the customer is having requests be canceled as a result.
Those are all of the usual suspects I can think of.
Related videos on Youtube
PeanutsMonkey
Updated on November 22, 2022Comments
-
PeanutsMonkey over 1 year
I have had a request come through to increase the pool size in IIS which I assume to be the application pool size.
I have attempted to search for more information regarding what the pool size is, what it does, its importance as well as caveats in increasing its size.
Am unsure where to find it in IIS 7 and 7.5 as well as what the default size is.
Does changing the pool size also affect web gardens?
-
ravi yarlagadda almost 12 yearsDo you have more context on this request? I wonder if they mean the memory limit?
-
Andrew Smith almost 12 yearsIt's a number of workers. By default, there is 1 worker. On each worker, you can setup CPU affinity mask.
-
PeanutsMonkey almost 12 years@Shane Madden - Sorry I don't and no it is not concerning memory.
-
PeanutsMonkey almost 12 years@Andrew Smith - What do you mean by CPU affinity mask? What refers to the number of workers?
-
ravi yarlagadda almost 12 years@PeanutsMonkey You should probably get some clarification on the request, then. There are a dozen different things they could mean.
-
PeanutsMonkey almost 12 years@Shane Madden - I did get clarification and it is to do with the number of connections a particular application is allowed. Is there a specific setting that allows the control of this?
-
ravi yarlagadda almost 12 years@PeanutsMonkey There's a limit on the number of requests before an app pool's worker process is recycled, but that can't really be referred to as a "size" limit, since it's a process lifetime limit. IIS doesn't have limits on concurrent connections.. Could they be referring to the application code itself? Does it maybe have a database connection pool configured in the application that IIS is running?
-
PeanutsMonkey almost 12 years@Shane Madden - If you provide that as an answer with elaboration on the process lifetime limit, I'll accept it as an answer.
-
-
PeanutsMonkey almost 12 yearsThanks. When you say
AppPool
I take it you mean application pool. In the first example of private memory limit, what do you mean by it defines how large an application pool can be? Secondly, what does the value zero mean when set on the CPU Limit? If the queue length is 1000, does it mean only 1000 concurrent simultaneous requests can be made at any given time? How does this affect the number of worker process? -
designarti almost 12 yearsI've updated my response to eliminate some of the ambiguities you called out.
-
designarti almost 12 yearsThe queue length does not affect the number of worker processes. They are independent. You might see this SO answer regarding how many worker processes you need.
-
designarti almost 12 yearsBy definition, the queue length dictates how many requests will be queued for processing, not the number of requests that can be processed simultaneously. See Managing, Tuning, and Configuring Application Pools in IIS 7.0.