POP\IMAP4 virtual servers repeatedly fail over under high load (281868)



The information in this article applies to:

  • Microsoft Exchange 2000 Server

This article was previously published under Q281868
Important This article contains information about modifying the registry. Before you modify the registry, make sure to back it up and make sure that you understand how to restore the registry if a problem occurs. For information about how to back up, restore, and edit the registry, click the following article number to view the article in the Microsoft Knowledge Base:

256986 Description of the Microsoft Windows Registry

SUMMARY

Five work queues in SMTP use a pool of threads known as the ATQ threads. By design, two of these queues can, by default, use up to 90 percent of the available threads. This thread pool is shared by the process that accepts POP and IMAP requests. Therefore, in a moderate to high load scenario, a situation can arise where SMTP can starve resources from POP and IMAP.

You can reserve adequate threads for POP and IMAP by limiting the percentage of threads that SMTP can use. To accomplish this, you must increase the overall number of threads available to Microsoft Internet Information Service (IIS). The only trade-off is increased memory usage for the additional threads.

MORE INFORMATION

Warning If you use Registry Editor incorrectly, you may cause serious problems that may require you to reinstall your operating system. Microsoft cannot guarantee that you can solve problems that result from using Registry Editor incorrectly. Use Registry Editor at your own risk.
There are two registry values that allow you to control the "SMTP % of threads" and "Additional threads per processor" values.

To control the percentage of threads used by SMTP, locate the following registry key:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\SMTPSVC\Queuing

Parameter: MaxPercentPoolThreads (REG_DWORD)
Description: Maximum Percentage of ATQ Threads that each queue will request
Default setting: Not present, but will default to 0x5A (90)
When to change: High SMTP activity is causing the POP and IMAP instances to fail in Cluster Administrator.
Recommended setting: Use the following formula to determine the settings:

MaxPercentPoolThreads = 90/(2*Number Of Virtual Server Instances)

For example: Assuming a cluster with two virtual server instances, the formula would be: 90/(2*2) = 22. If you get a decimal point in the calculation, round down to the next integer.


To control the additional threads per processor, locate the following registry key:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\SMTPSVC\Queuing

Parameter: AdditionalPoolThreadsPerProc (REG_DWORD)
Description: Additional pool per processor threads when SMTP is started
Default setting: Not present, but will default to 0x6 (6)
When to change: High SMTP activity is causing the POP and IMAP instances to fail in Cluster Administrator. Change in conjunction with the MaxPercentPoolThreads subkey.
Recommended setting: Use the following formula to determine the settings:

AdditionalPoolThreadsPerProc = ((9/(MaxPercentPoolThreads/100))-4)/2

Note The formula expresses the MaxPercentPoolThreads value as a percentage. In the example, (MaxPercentPoolThreads/100) equals 0.22.

For example: Assuming a cluster with two virtual server instances, the formula would be: ((9/(0.22))-4)/2 = (41-4)/2 = 18. If you get a number greater than 200, you need to assign that number to the following registry value:

HKEY_LOCAL_MACHINE\ System\CurrentControlSet\Services\InetInfo\Parameters\PoolThreadLimit


Modification Type:MinorLast Reviewed:4/28/2005
Keywords:kbinfo kbnofix KB281868