Kernel Request Queue

Applies To: Windows Server 2003, Windows Server 2003 with SP1

After HTTP.sys detects the TCP/IP thread, it either begins serving the request with content stored in the HTTP.sys cache, if available (this is called a cache hit), or puts the request in a kernel request queue for the designated application pool. Because the request is still in the kernel, but is waiting in a queue for a specific application pool, this queue is sometimes called the application pool queue. In IIS Manager, this queue is called the kernel request queue.

When IIS 6.0 runs in worker process isolation mode, by default HTTP.sys checks the number of requests for a designated application pool queue before it adds a new request to the queue. If adding the new request to the queue exceeds the queue limit, the server rejects the request, logs a QueueFull error in the HTTP error log, and sends a 503 error (Service Unavailable) to the client. This 503 error response cannot be customized. During times of high traffic, if you experience this 503 error, try adjusting the number of requests that wait in the queue. Increase the number to a large value such as 16,000 and test to see if the 503 errors persist.

Requests in the application pool queue remain in the queue if you lower the queue maximum to a number less than 1,000 by using the following procedure. For information about adjusting the number of requests allowed in the kernel request queue, see Configuring Application Pool Queue-Length Limits.