Server Fault is a question and answer site for system and network administrators. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

while troubleshooting an issue today with our web sites the Microsoft engineer noticed that we had run out of available ATQ threads. I am not sure what an ATQ thread is or how it plays into how IIS handles responses. Can someone point me in the right direction to learn more.

share|improve this question
up vote 0 down vote accepted

ATQ = Asynchronous Thread Queue. At a high level, it's the main thread pool for IIS. Here's a good blurb from this Windows IT Pro article which is a nice talk on IIS threading.

IIS, ASP, and Threading IIS uses a pool of threads (i.e., instances of code execution) to handle incoming requests and work on those requests. This pool of threads is called the Asynchronous Thread Queue (ATQ). IIS uses a thread pool because reusing an existing thread is faster than making a new thread each time a new request comes in. The ATQ initially handles all incoming requests. After the initial handling, IIS might send the request to another queue or leave the request in the ATQ. Here's a list of request types and the queue in which they run:

  • .htm, .jpg, .gif, and other static requests always run in the ATQ.
  • A Common Gateway Interface (CGI) request creates a new process to handle the request and run in that process. However, by default, the request still holds the ATQ thread it started in to handle the return information from the CGI process.
  • Internet Server API (ISAPI) filters or extensions by default run in the ATQ. However, an ISAPI component can create its own thread pool and use that pool for execution.
  • Active Server Pages (ASP) requests are passed from the ATQ to the thread pool that ASP uses (a COM+ thread pool in IIS 5.0 or an MTX pool in IIS 4.0).
  • OOP requests (i.e., OOP applications) go to the thread pool that ASP uses. The ASP thread makes the appropriate interprocess call to the OOP application.
share|improve this answer

Great answer from squillman. What you're probably looking at is a web site that has long running requests (either downloads or other static requests) that aren't freeing up.

It's not ASP, which decouples the request thread from the ATQ (DevX article). but could be some other misbehaving ISAPI filter.

What else do you have running on the web server?

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.