当Exchange Server 2003需要了解关于用户的一些信息的时候,它会向活动目录(Active Director)发送一个LDAP请求。由于Exchange 2003是基于活动目录工作的, 所以,在你的域控制器上并不存在该过程的额外传输工作负载。
然而,你却可以通过将活动目录请求的数量最小化来减少此过程对域控制器上的Exchange Sever的冲击。实现这个目标最简便的方法就是使用缓存。
Exchange Server有两个内建的缓存,这是用来缓存活动目录请求的。它们全都涉及到DSAccess缓存。
DSAccess缓存实际上是由两个独立的缓存构成的。其中的一个缓存是用于用户对象的,而另外一个则是针对配置数据的(包括像存储和路由这样的东西)。
作为默认值,Microsoft Exchange已经为用户对象预留出140MB的存储空间。当缓存已满,或者当对象的TTL已满的时候,用户对象缓存中的对象就会溢出。用户对象的默认TTL值为五分钟。
默认的配置缓存只有5MB,而且在设置上存在很大的区别。作为对象的TTL的默认设置是10分钟。一般来说,配置对象的值要少于用户对象值。配置对象本质上更趋向于静态。然而,为它们使用小的缓存和长时间的TTL是非常有意义的。
如果你的公司是一家规模很大的企业,或者你的Exchange组织已经在域控制器上有很沉重的工作负载,那么你可以在注册表中调整配置缓存设置来提高性能(微软公司并不推荐调整用户缓存的设置)。
如何手工操作改变缓存的设置
当你修改注册表的时候,总会有标准的警告出现:编辑注册表是危险的。如果你做出了不正确的注册表修改,那么你就可能会破坏Windows操作系统或者你的应用程序,所以我建议你在继续下面的操作之前把整个系统都进行备份。
1. 通过注册表树型结构导航到:
HKEY_LOCAL_MACHINE\ System \ CurrentControlSet \ Services \ MSExchangeDSAccess
2. 创建一个REG_DWORD值,并命名为CachingEnabled。
3. 把新的键值的数据值设置为0x1。这样就能启用缓存,其实默认值中缓存就是启用的,但是,如果你打算对缓存做出改动的话,那么你仍然需要设置这个键值。(如果出于其他原因的考虑,你需要禁用缓存——我并不推荐你这样——那么你就需要把这个值设置为0x2。)
4. 你还需要创建一个容器,并命名为Instance0。这个容器必须直接处于MSExchangeDSAccess容器之下。
准备工作都已经完成了,现在,你可以在Instance0容器中创建一些用于控制缓存运行方式的注册表键值了。
5. 你需要创建的第一个键值是一个REG_DWORD值,叫做MaxMemoryConfig。如果你希望保留缓存原始的5MB大小,那么你就要把这个键值设置为0x00001400。但是你还可以通过把该键值设置为,以便使缓存的大小增加到10MB。
6. 你要创建的下一个键值是用来在缓存内控制对象的TTL的。该键值也是一个REG_DWORD值,叫做CacheTTL。这里的默认值是0x600。该值应该与缓存中用于对象的TTL值得秒数是一致的。例如,0x600等于600秒,也就是10分钟。你可以把该值更改为0x900(900秒等于15分钟)以便使TTL值达到15分钟。
7. 你最后需要创建的键值同样还是一个REG_DWORD值,叫做MaxEntries。这个键值是用来控制在缓存中可以同时存在多少个对象的。推荐值是0x0,这样在缓存中登记的对象数量就没有任何限制了。