Topic Last Modified: 2005-11-18

The Microsoft® Exchange Server Analyzer Tool reads the following registry entries to determine whether the maximum number of Internet Information Services (IIS) pool threads has been modified from the default value:

HKEY_LOCAL_MACHINE\ System\CurrentControlSet\Services\Inetinfo\Parameters\PoolThreadLimit

If the Exchange Server Analyzer finds PoolThreadLimit to be present and configured with an alternate value, a non-default configuration message is displayed.

The PoolThreadLimit registry value specifies the maximum number of input/output (I/O) worker threads that can be created in the Inetinfo.exe process, which in turn controls the maximum number of simultaneous connections that can be made to IIS. Each pool thread watches for a network request and processes it, either by sending back a static file or by passing the request to an ISAPI extension DLL (such as ASP.DLL) or to a Common Gateway Interface (CGI) application. If the ISAPI extension processes a request synchronously and it takes a long time to process requests, it will tie up the worker thread, leaving IIS with fewer worker threads to process other requests. For this reason, well-written ISAPI extensions, such as ASP, implement their own thread pools, place requests in a queue, and process them asynchronously with their own threads, so as not to tie up IIS worker threads.

By default, IIS sets PoolThreadLimit to:

2 * number of megabytes of RAM present in the machine

If this value is larger than 256, it will be clamped to 256. By default, this registry value does not exist. If this value is present in the registry, it overrides IIS's default calculation.

Generally, if you find that the default limit of 256 threads is inadequate, you probably have a poorly written ISAPI extension tying up IIS worker threads. 256 is a lot of threads to have active simultaneously and will incur significant overhead in synchronization and context switching.

The PoolThreadLimit registry value is a hard limit that includes all IIS worker threads, including the HTTP, FTP, NNTP, and SMTP services.

This article contains information about editing the registry. Before you edit the registry, make sure you understand how to restore the registry if a problem occurs. For information about how to restore the registry, view the "Restore the Registry" Help topic in Regedit.exe or Regedt32.exe.

To revert to the default configuration

  1. Open a registry editor, such as Regedit.exe or Regedt32.exe.

  2. Navigate to: HKLM\System\CurrentControlSet\Services\Inetinfo\Parameters

  3. Examine, delete, or modify the PoolThreadLimit value.

  4. Close the registry editor and restart the IIS Admin service for the change to take effect.

Before you edit the registry, and for information about how to edit the registry, read the Microsoft Knowledge Base Article, "Description of the Microsoft Windows Registry" (