How to Configure the DSAccess User Cache


Topic Last Modified: 2005-06-28

Directory Service Access (DSAccess) is an internal component in Exchange 2000 Server and Exchange Server 2003 that controls how all Exchange components access Active Directory® directory service. The primary function of DSAccess is to maintain information about various directory-related events and operations. For example, DSAccess discovers the Active Directory topology and detects if domain controllers and global catalog servers are available and responding to queries. In addition, all directory queries made by internal Exchange components such as the Information Store are routed through DSAccess, such as recipient resolution, configuration setting lookups, and others. As part of its job, DSAccess maintains an in-memory cache of the results of some of these queries so that if the same information is requested twice, it can be retrieved from the DSAccess cache instead of through another LDAP query against Active Directory.

MaxMemoryUser is an Exchange server registry parameter that allows an Exchange administrator to control the maximum amount of memory that user data objects in the DSAccess cache are allowed to consume. In Exchange 2000 Server, the user cache was initially set at 25 Mb in size. On Exchange 2000 Server computers that service a large number of Microsoft Office Outlook® clients, the default DSAccess user cache size was not sufficient. On systems with an undersized DSAccess cache, local message delivery and address book name resolution may be slower than desirable.

To improve performance, the default value for the user cache has been optimized and set to 140 MB in Exchange Server 2003. When upgrading from Exchange 2000 Server to Exchange Server 2003, any manual setting will be preserved. If this Exchange server was upgraded from Exchange 2000 Server to Exchange Server 2003 you should make sure the value for MaxMemoryUser is at least 140 MB.

The MaxMemoryUser value was often used in conjunction with the MaxMemoryConfig value which controls the maximum amount of memory that configuration data objects in the DSAccess cache are allowed to consume. If you remove the MaxMemoryUser value as described in the procedure below, you should similarly remove the MaxMemoryConfig registry value. For detailed instructions, see How to Configure the DSAccess Configuration Cache.

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

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

  2. Navigate to HKLM\System\CurrentControlSet\Services\MSExchangeDSAccess.

  3. If MaxMemoryUser is present, delete it.

  4. Restart the Microsoft Exchange System Attendant service for the change to take effect.

For more information about DSAccess, see Microsoft Knowledge Base article 250570, "Directory Service Server Detection and DSAccess Usage," (

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