本部分提供有关管理不同类型内存的信息。有关不同缓存类型的描述以及缓存调整的信息,请参见《Sun Java System Directory Server Enterprise Edition 6.1 Reference》中的第 5 章 “Directory Server Data Caching”。
填充缓存是指将数据填入缓存中,以使后续的目录服务器行为能反映出正常的操作性能,而不是提升的性能。如果希望在执行基准测试时获得可再现的结果,或者要测量和分析潜在的优化,则填充缓存非常有用。
请尽量避免主动填充缓存。在测量性能之前,让客户端与目录服务器之间的一般或典型交互操作来填充缓存。
可以在 http://www.slamd.com 找到用于填充数据库缓存的工具。
修改缓存可能会严重影响服务器性能。修改缓存时请谨慎操作。
您可以使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。
获取当前的数据库缓存级别。
$ dsconf get-server-prop -h host -p port db-cache-size |
更改数据库缓存级别。
$ dsconf set-server-prop -h host -p port db-cache-size:size |
其中,size 可以用千兆字节 (G)、兆字节 (M)、千字节 (k) 或字节 (b) 表示。您的计算机必须支持所指定的大小。
安装时的默认缓存级别适合于测试环境,而不适用于生产环境。进行调整时,您可能需要监视服务器的数据库缓存。
您可以使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。
监视数据库缓存。
$ ldapsearch -h host -p port -D cn=admin,cn=Administrators,cn=config -w - \ -b "cn=monitor,cn=ldbm database,cn=plugins,cn=config" "(objectclass=*)" |
如果数据库缓存足够大,并且已进行了填充,则命中率 (dbcachehitratio) 应该很高。此外,读入的页面数 (dbcachepagein) 和写出的干净页面数 (dbcacheroevict) 应该很低。此处的“高”和“低”是相对于部署限制而言的。
进行调整时,您可能需要检查一个或多个后缀的条目缓存。可使用以下过程查看条目缓存级别。
您可以使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。
监视条目缓存。
$ ldapsearch -h host -p port -D cn=admin,cn=Administrators,cn=config -w - \ -b "cn=monitor,cn=db-name,cn=ldbm database,cn=plugins,cn=config" "(objectclass=*)" |
如果后缀的条目缓存足够大(可以容纳该后缀中的大多数条目),并且已经填充了缓存,则命中率 (entrycachehitratio ) 应该很高。
如果已经填充了缓存,您将会看到,当先前为空的条目缓存被填满时,条目缓存大小 (currententrycachesize) 将接近于最大条目缓存大小 (maxentrycachesize)。理想情况下,条目的数量 (currententrycachecount) 应该等于或非常接近于后缀中的条目总数 (ldapentrycachecount)。
修改缓存可能会严重影响服务器性能。修改缓存时请谨慎操作。
您可以使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。
获取当前的条目缓存级别。
$ dsconf get-suffix-prop -h host -p port suffix-DN entry-cache-count entry-cache-size |
更改条目缓存计数。
$ dsconf set-suffix-prop -h host -p port suffix-DN entry-cache-count:integer |
其中,integer 是要在缓存中存储的条目数。
更改条目缓存大小。
$ dsconf set-suffix-prop -h host -p port suffix-DN entry-cache-size:size |
其中,size 是用千兆字节 (G)、兆字节 (M)、千字节 (k) 或字节 (b) 表示的缓存大小。您的计算机必须支持所指定的大小。
如果要限制 nsslapd 进程所使用的堆内存量,可以设置动态内存占用的阈值。当目录服务器在资源共享或资源稀少的计算机上运行时,可能需要设置此阈值。
只能在 SolarisTM 和 Linux 平台上设置此阈值。
有关调整内存大小的信息,请参见《Sun Java System Directory Server Enterprise Edition 6.1 Deployment Planning Guide》中的“Directory Server and Memory”。
无法使用 DSCC 执行此任务。请使用命令行,如以下过程所述。
默认情况下,heap-high-threshold-size 和 heap-low-threshold-size 属性是 undefined。
设置堆内存高端阈值的最大值。
$ dsconf set-server-prop -h host -p port heap-high-threshold-size:value |
其中,value 是 undefined 或用千兆字节 (G)、兆字节 (M)、千字节 (k) 或字节 (b) 表示的内存大小。您的计算机必须支持所指定的大小。
有关用于 heap-high-threshold-size 的值的建议,请参见 server(5dsconf) 手册页。
设置堆内存低端阈值的最大值(可选)。
$ dsconf set-server-prop -h host -p port heap-low-threshold-size:value |
其中,value 是 undefined 或用千兆字节 (G)、兆字节 (M)、千字节 (k) 或字节 (b) 表示的内存大小。您的计算机必须支持所指定的大小。
有关用于 heap-low-threshold-size 的值的建议,请参见 server(5dsconf) 手册页。