Microsoft KB Archive/328466

= ESE log buffers that are set too low can cause the Microsoft Exchange Information Store service to stop responding =

Article ID: 328466

Article Last Modified on 10/25/2007

-

APPLIES TO


 * Microsoft Exchange Server 2003 Enterprise Edition
 * Microsoft Exchange Server 2003 Standard Edition
 * Microsoft Exchange 2000 Server Standard Edition

-



This article was previously published under Q328466





SUMMARY
If a Microsoft Exchange 2000 Server or Microsoft Exchange Server 2003 Information Store service appears to stop responding (hang), you can use either the Adplus or the Userdump command-line utility to create a User.dmp file. For example, you can use the adplus command with the following syntax:

adplus.vbs -pn store.exe -hang

When you are debugging the User.dmp file in the store, if there are many threads that are similar to the following data, the JET log buffers value may be set to a value that is too low:

0:294> kb ChildEBP RetAddr Args to Child 6f93f7e4 77e867b0 00000000 6f93f7fc fffffdfa ntdll!_ZwDelayExecution+0xb 6f93f804 001f8783 00000001 00000000 002d80a7 KERNEL32!SleepEx+0x32 6f93f810 002d80a7 33ed42e0 3601e6d8 3601e6c0 ESE!UtilSleep+0x16 6f93f848 001c075c 3601e6d8 00000001 3601e6c0 ESE!ErrLGIDeferBeginTransaction+0xea 6f93f8a8 001c04b8 3601e710 3601e790 6f93f920 ESE!ErrLGReplace+0x8f 6f93f95c 001c0182 3601e790 00000800 028fd660 ESE!ErrNDReplace+0x1ed 6f93f9d0 001c2279 00000800 3601e6c0 00000000 ESE!ErrBTReplace+0x181 6f93fa0c 001c248f 00000800 00000000 00000000 ESE!ErrDIRReplace+0xec 6f93fca0 001c21ef 00000000 00000000 1db2cb50 ESE!ErrRECIReplace+0x4b3 6f93fcc4 001c210c 33e00740 33ed42e0 3601e6c0 ESE!ErrIsamUpdate+0xd7 6f93fcf4 001c209f 00000000 00000000 00000000 ESE!JetUpdateEx+0x43 6f93fd40 00419ad2 00800082 0080036e 00000000 ESE!JetUpdate+0x62 6f93fd74 004be2b8 00000001 00000000 00000000 store!JTAB_BASE__EcUpdate+0xdd 6f93fdcc 004747ef 00000000 00000001 00000000 store!LOGON__EcUpdateMailboxTable+0x45b 6f93fdf4 0047471e 12336890 00474eb1 00000001 store!LOGON__~LOGON+0xf0 6f93fdfc 00474eb1 00000001 1224c3e0 06e53fc8 store!LOGON__`scalar deleting destructor'+0x8 6f93fe14 00474e47 3c944288 06e53fc8 6f93feb8 store!EcReleaseLogonOp+0x6a 6f93fe28 00474dcd 3c944288 6f93fe48 004cdc36 store!SESS__ReleaseLogons+0x3c 6f93fe34 004cdc36 0012c050 00502369 77d4ef2f store!SESS__Free+0x9 6f93fe3c 00502369 77d4ef2f 05da5b40 00000014 store!DestroyCxh+0x26

The JET threads that are in this &quot;Delay Execution&quot; state are in a tight while loop that repeatedly sleeps every 1 millisecond as long as the &quot;errLGNotSynchronous&quot; error condition is true.



MORE INFORMATION
Extensible Storage Engine (ESE) uses a set of log buffers to hold information in memory before it writes to the transaction logs. For large servers that are running Exchange 2000 Service Pack 1 (SP1) or Exchange 2000 Service Pack 2 (SP2), the default value of 84 is too low. This can cause excessive disk I/Os to the transaction log drive. You will see a significant decrease in performance if the server is under load or if users are sending large messages.

The Performance Monitor counter Database (Information Store Instance)\Log Record Stalls/sec indicates the number of log records that cannot be added to the log buffers per second because the log buffers are full. If either of the following results is true for Log Record Stalls/sec, you may have to configure the log buffers setting:
 * Average value is more than 10 per second.
 * Spikes (maximum values) are higher than 100 per second.

To correctly set the msExchESEParamLogBuffers value, use the following information:
 * For Exchange 2000 Server, Exchange 2000 Server Service Pack 1 (SP1), or Exchange 2000 Server Service Pack 2 (SP2), set this value to 9000.
 * For Exchange 2000 Server Service Pack 3 (SP3), set this value to 512.
 * For Exchange Server 2003, a default value of 500 is used. Additionally, you should change the value for the msExchESEParamLogBuffers attribute to 9000.

This parameter is stored in Active Directory for Exchange 2000 and Exchange 2003. Therefore, you must use ADSI Edit to view and change this value. To set the value of msExchESEParamLogBuffers to a higher value, follow these steps.

Warning If you use the ADSI Edit snap-in, the LDP utility, or any other LDAP version 3 client, and you incorrectly modify the attributes of Active Directory objects, you can cause serious problems. These problems may require you to reinstall Microsoft Windows 2000 Server, Microsoft Windows Server 2003, Microsoft Exchange 2000 Server, Microsoft Exchange Server 2003, or both Windows and Exchange. Microsoft cannot guarantee that problems that occur if you incorrectly modify Active Directory object attributes can be solved. Modify these attributes at your own risk.
 * 1) Start ADSI Edit.
 * 2) Double-click the Configuration container, expand CN=Services, expand CN=Microsoft Exchange, and then expand CN= .
 * 3) Expand CN=Administrative Groups, expand CN= , and then expand CN=Servers.
 * 4) Expand CN= , expand CN=InformationStore, right-click CN= , and then click Properties.
 * 5) In the Select a property to view box, click msExchESEParamLogBuffers.
 * 6) In the Edit Attribute box, set the value to 512 for Exchange 2000 or to 9000 (for example, clear the value) for Exchange 2003.

For computers that are running Exchange 2000 SP3, set this value to 512. For computers that are running Exchange 2000, Exchange 2000 SP1, Exchange 2003, Exchange 2003 SP1, or Exchange 2003 SP2, set this value to 9000.
 * 1) Click Apply, and then click OK.

You must restart the Microsoft Exchange Information Store service for the change to take effect.

