Thursday, January 15, 2009

Improving Paged Pool and Non-Paged Pool Memory Usage in Exchange 2003

Reduce open handle count for INETINFO:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\InetInfo\Parameters"FileCacheLifeTimeSeconds"=dword:0000012c (300 decimal, which is 5 minutes. Default is 30 minutesIf we cache file handles for longer durations, then the corresponding non-paged pool objects should also remain in memory (and thus, causing the NPP depletion). Decreasing the time would mean that they stay around for a shorter time and the accumulation is reduced decreasing the net non-paged pool memory usage.http://support.microsoft.com/kb/267551


Move the EXIFS free list (Flst) and auxiliary free list (AuxL) to paged pool memory:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EXIFS\Parameters
Set “AuxFreeListInPagedPool” = REG_DWORD 0x00000001Set “FreeListInPagedPool” = REG_DWORD 0x00000001
Set EnableAggressiveMemoryUsage for IIS:HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\HTTP\Parameters
Set “EnableAggressiveMemoryUsage” to 1By default, the HTTP service stops accepting connections when the non-paged pool memory reaches 20 megabytes (MB). After you add this value to the registry, the HTTP service stops accepting connections when non-paged pool memory reaches 8 MB. http://support.microsoft.com/kb/820129

934878 Users receive a "The page cannot be displayed" error message, and "Connections_refused" entries are logged in the Httperr.log file on a server that is running Windows Server 2003, Exchange 2003, and IIS 6.0 http://support.microsoft.com/default.aspx?scid=kb;EN-US;934878

Disable POP3/IMAP Protocol Logging:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Pop3svc\ParametersPOP3 Protocol Log Level = 0
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\IMAP4SVC\ParametersIMAP4 Protocol Log Level = 0

The logging feature is designed to be used for short periods of time while you gather troubleshooting information, and then turned off. If you leave protocol logging turned on, the system resources may become exhausted. If frequent bursts of traffic occur and create new log files and new handles, the server eventually runs out of non-paged pool memory and does not respond.http://support.microsoft.com/kb/299778

DelayConnectionProcessing

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\POP3Svc\Parameters
Set "DelayConnectionProcessing" to REG_DWORD 0x1

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\IMAP4SVC\Parameters
Set "DelayConnectionProcessing" to REG_DWORD 0x1

This problem may occur if connections from the front-end Exchange server to the back-end Exchange servers are not cleaned up correctly when the back-end Exchange server fails over.

Implement MaxPercentPoolThreads and MaxPercentPoolThreads

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) Set to 45

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 Set to 8

1 comment:

Mike Webster said...

Nice Post, done quite a bit of work on NPP for e2003 myself and came up with the following bullet points to check;

• Enable Aggressive Memory Usage.
• Set EXIFS to use Paged Pool instead of NPP.
• Disable unused NIC’s.
• Avoid on-board NIC’s – use network cards where possible.
• Avoid Teamed NIC’s where possible.
• Disable unused HBA Ports.
• Uninstall graphics drivers, use default VGA drivers.
• Avoid jumbo frames where possible
• Update NIC / HBA drivers, testing between each change.
• Apply Microsoft hotfix KB820129 to prevent NPP fragmentation.
• Drop the receive descriptors down to 128 on NIC’s where possible.
• Set /basevideo in the boot.ini
• Ensure /PAE is not set in boot.ini
• Use Poolmon and Driver Verifier to identify sources of high consumption of NPP.
• Consider holding off Windows 2003 SP2, at least for now.