Optimizing Performance

Applies To: Windows Server 2003, Windows Server 2003 R2, Windows Server 2003 with SP1, Windows Server 2003 with SP2

The topics that are in this section provide information about optimizing the performance of your RMS deployment.

Optimizing Directory Services Performance

You can monitor the directory services performance counters that are included with RMS. If necessary, you can optimize performance by modifying the registry settings that control the attributes of the Active Directory cache.

The registry settings control the following attributes of the Active Directory cache:

  • Maximum number of principals to be cached

  • Validity period of information that is cached for principals

  • Maximum number of groups to be cached

  • Validity period of information that is cached for groups

  • Maximum number of group membership entries

  • Validity period of information that is cached for group membership

In general, RMS responds to requests requiring directory services information faster if the validity period for cached information is a large value or there are a lot of entries in the cache.. If the information is stored in the Active Directory cache, then a round-trip to Active Directory to perform a lookup is not required. This shortens the response time for the request.

The tradeoff for storing more information in the Active Directory cache is that more system memory resources are required. Another issue to consider when you configure the registry settings is the probability that the Active Directory cache is not accurate is increased when the validity period is a large value. This can occur if information is changed in Active Directory, but the change is not yet reflected in the Active Directory cache. If Active Directory is frequently changed, you may want to specify a shorter validity period for cached information; one that reflects this frequency.

The directory services performance counters are described in “RMS: DirectoryServices Performance Counters” later in this subject. For instructions about using them, see “Using Performance Counters” earlier in this subject. The counters to monitor are the “hits” versus the “misses.” RMS must perform an Active Directory lookup for each miss.

For details about the registry settings and instructions on modifying them, see “Changing Active Directory Cache Settings” later in this subject.

Optimizing Active Directory Connection Pool Settings

To improve system performance, you can add and modify registry keys that control Active Directory Lightweight Directory Access Protocol (LDAP) connection pool settings. Configuring the registry keys is described in “Changing Connection Pool Registry Settings” later in this subject.

RMS is designed to optimize LDAP connections. It establishes one connection for every Active Directory global catalog, and each connection can serve multiple threads. To provide robustness, it maintains a pool of connections to serve requests. To avoid placing a large load on a single global catalog, RMS uses an algorithm to distribute requests by performing load balancing among the global catalogs that are on the list of global catalogs to query. It also automatically handles LDAP errors and reroutes requests to a different global catalog, as necessary.

RMS creates a list of global catalogs to query by using the Topology Discovery algorithm. You can specify the minimum and maximum number of available global catalogs that Topology Discovery must locate before RMS services can start. Topology Discovery first discovers the global catalogs that are in the current site. If additional global catalogs are required, it then searches for them in other sites. You also specify the maximum number of connections that can become unavailable before RMS stops accepting requests. If one or more global catalogs on the query list later become unavailable, Topology Discovery begins searching for substitute global catalogs to add to the query list.

Alternately, you can list the global catalogs that you want RMS to use. In this case, Topology Discovery does not search for global catalogs to add to the query list.

You can also configure settings for how RMS performs load balancing among the global catalogs. You can specify how important, relative to each other, the following considerations are when deciding whether to send a particular request to a particular global catalog:

  • Round robin (WtRoundRobin). This parameter specifies the relative importance of load balancing that uses round-robin logic. The default weight setting is 1, which means that this is the least important consideration for the server to take into account when selecting a global catalog.

  • Thread count during connection (WtThreadCount). This parameter specifies the relative importance of the number of threads that are allocated to a connection. The default weight setting is 100, which means that this is 100 times more important that thread count of a global catalog is low for a connection to be selected, than it is to load balance by using round-robin logic.

  • Slow connection (WtSlow). This parameter specifies the relative importance of a slow connection. The default weight setting is 1,000, which means that it is 10 times more important for a connection to a global catalog not to be slow for it to be selected, than it is for thread count to be low.