![]() | |
Sun Java System Calendar Server 6 2005Q1 管理指南 |
第 21 章
优化 Calender Server 的性能要改进 Sun Java System Calendar Server 的性能,请考虑使用以下方法:
为 LDAP Directory Server 编制索引要改进 Calendar Server 访问 LDAP Directory Server 时的性能,请在 LDAP 配置文件中添加以下属性的索引:
- icsCalendar — 此属性用于搜索日历用户或资源的默认日历。指定存在 (pres)、等式 (eq) 和子串 (sub) 索引类型。
- icsCalendarOwned — 此属性用于搜索用户所拥有的其他日历。指定存在 (pres)、等式 (eq) 和子串 (sub) 索引类型。请参阅提高日历搜索在 DWP 环境中的性能。
- mail 和 mailAlternateAddress — 这两个属性用于指定用户的主电子邮件地址和备用电子邮件地址。请参见添加所需的 mail 属性和设置电子邮件别名。
注
如果运行 Directory Server 设置脚本 (comm_dssetup.pl) 来配置 Directory Server 5.x,该脚本将添加这些索引和其他索引。请参见第 2 章“目录准备脚本 (comm_dssetup.pl)”。
有关添加 Directory Server 索引的信息,请参阅位于以下 Web 站点的 Directory Server Configuration, Command, and File Reference:
http://docs.sun.com/coll/DirectoryServer_05q1 和
http://docs.sun.com/coll/DirectoryServer_05q1_zh
提高日历搜索在 DWP 环境中的性能处于 DWP 环境(即,日历数据库分布在多个后端服务器中)中时,在日历数据库中搜索某个日历将会消耗大量时间。如果先在 LDAP 条目中查找,然后直接找出该日历所在的那个 DWP 主机,日历搜索的速度将会更快。
本节包含以下主题:
启用日历搜索以查看 LDAP
要使日历搜索可以先查看 LDAP 目录,然后再查看日历数据库,请执行以下步骤:
通过创建索引提高搜索性能
- 要确定是否可以通过创建索引提高日历搜索性能,请尝试使用以下 LDAP 命令:
ldapsearch -b "base" "(&(icscalendarowned=*user*)
(objectclass=icsCalendarUser))"其中,base 是 Calendar Server 用户和资源数据所在 Directory Server 的 LDAP 基本 DN,user 是最终用户可以在“Calendar Express 订阅”->“日历搜索”对话框中输入的值。
测试表明,如果没有为 icsCalendarOwned 创建索引,上述搜索功能搜索 60,000 个条目大约需要 50 到 55 秒。而创建索引后,上述搜索只需要大约 1-2 秒时间。
- 通过运行 comm_dssetup.pl 为相应的 LDAP 属性或至少为 icsCalendarOwned 创建索引。
comm_dssetup.pl 将为该属性和许多其他属性创建索引以便提高各方面的性能。如果尚未运行 comm_dssetup.pl,或者已运行它但未执行创建索引操作,则可以再次运行此实用程序来创建索引,也可以使用 Directory Server 工具来执行创建索引操作。
有关 comm_dssetup.pl 如何创建索引的信息,请参见属性索引。
有关添加 Directory Server 索引的信息,请参阅位于以下 Web 站点的 Directory Server Configuration, Command, and File Reference:
http://docs.sun.com/coll/DirectoryServer_05q1 和
http://docs.sun.com/coll/DirectoryServer_05q1_zh
通过禁用通配符搜索提高日历搜索的性能默认情况下,Calendar Server 中禁用通配符搜索。即,当您使用图形用户界面搜索日历时,或在自定义界面中发出 search_calprops.wcap 时,它将搜索与使用 WCAP 命令传递的搜索字符串完全匹配的字符串。
如果您通过取消注释 ics.conf 文件中的以下行(删除开头的惊叹号 ["!"])启用了通配符搜索,则可能会对性能产生负面影响。
!service.calendarsearch.ldap.primaryownersearchfilter = "(&(|(uid=*%s*)(cn=*%s*))(objectclass=icsCalendarUser))"
要测试通配符搜索对性能的影响,请通过在行前插入惊叹号 ("!") 再次注释该行。
改进 CLD 插件的性能在系统访问日历数据库中的日历之前,系统必须确定哪个后端计算机存储了该用户的日历。为了找到相应的后端计算机,系统将搜索 LDAP 目录以查找该用户的条目并获取 icsDWPHost 属性。此搜索会消耗大量时间,而且每次对日历数据进行访问时都必须执行它。每个用户会话都需要多次访问数据库,从而导致多次搜索 LDAP。为了节省时间和增强性能,请通过编辑 ics.conf 文件启用 LDAP 数据高速缓存,如下所示:
local.ldap.cache.enable="yes"
LDAP 数据高速缓存存储了用户 ID 及其关联的 icsDWPHost 属性。在搜索 LDAP 查找用户条目之前,系统将检查该高速缓存以查找该用户 ID。如果高速缓存中有该用户 ID,系统将从存储在高速缓存中的 icsDWPHost 属性中获取后端主机名。如果高速缓存中没有该用户 ID,系统将执行 LDAP 搜索并将该用户 ID 和属性复制到高速缓存中。随后,对用户日历数据的访问速度将会变快,因为,它现在将在高速缓存中查找该用户 ID。
提高 LDAP 数据高速缓存的性能默认情况下,已启用 LDAP 数据高速缓存。要使用 ics.conf 参数调优它,请调整表 21-1 中所示的一个或多个参数。
调优 LDAP SDK 高速缓存有一对参数用于控制项目保存在高速缓存中的时间以及高速缓存可以具有的大小。
要调优高速缓存,请编辑表 21-2 中所示的一个或多个参数:
调优自动备份必须根据需要调整保留在磁盘上的备份数目,使其不会超出可用磁盘空间。要帮助管理归档和热备份所占用的磁盘空间量,您可以更改各种 ics.conf 参数的设置,这些参数用于确定同时可以保留的备份副本数以及将触发清理早期副本的磁盘空间阈值。
可以为每种备份类型(归档和热备份)调整以下三种参数:
Calendar Server 将备份保留可能的最多天数而不会超过磁盘空间的阈值。因此,如果当前备份将要使磁盘使用率超过阈值,系统将清除最早的备份副本,并查看磁盘空间使用率是否降低到阈值以下。系统将继续清除早期的备份副本,直到满足以下条件之一:再删除一个备份副本将使磁盘上的备份数目小于备份副本的最小数目,或者磁盘空间使用率已低于阈值。
因此,您可以使用阈值参数来管理备份使用的磁盘空间量。反之,您也可以通过调整允许的磁盘空间量和副本量来管理保留在磁盘上的备份数目。
表 21-3 列出了用于控制磁盘空间和磁盘上保留的备份数目的 ics.conf 参数:
对会话数据库使用基于内存的文件系统要改进性能,可以通过设置 ics.conf 文件中的以下参数为会话数据库配置基于内存的文件系统 (tmpfs):
local.instance.use.tmpfs = "true"
然后将基于 service.http.sessiondir.path 和 service.admin.sessiondir.path 参数的值覆盖 tmpfs 文件系统。
有关更多信息,请参见 Solaris 文档中的 tmpfs(7FS) 和 mount_tmpfs(1M) 手册页:
http://docs.sun.com/db/prod/solaris 和
http://docs.sun.com/db/prod/solaris?l=zh
在多个 CPU 中使用负载平衡如果服务器上具有多个 CPU,默认情况下 Calendar Server 会将 HTTP 服务(cshttpd 进程)和分布式数据库服务(csdwpd 进程)分布到这些 CPU 中。
service.http.numprocesses 和 service.dwp.numprocesses 参数确定了每个服务实际运行的进程数目。默认情况下,这些参数被设置为安装时服务器的 CPU 数目,但您可以重置这些值。例如,如果服务器具有 8 个 CPU,但您希望 cshttpd 和 csdwpd 进程只在 4 个 CPU 中运行,那么可以将这些参数设置为:
service.http.numprocesses="4"
service.dwp.numprocesses="4"要禁用负载平衡,请在 ics.conf 文件中添加 service.loadbalancing 参数并将其设置为 "no"。然后重新启动 Calendar Server 以使更改生效。
使用超时值可以使用各个 ics.conf 参数的超时值来调整 Calendar Server 的性能。
共有以下几类超时:
有关编辑 ics.conf 参数的信息,请参见编辑 ics.conf 配置文件。
csadmind 的超时值
表 21-4 介绍了 ics.conf 文件中由管理服务 (csadmin) 使用的 Calendar Server 超时参数。
最终用户的 HTTP 超时值
表 21-5 介绍了 ics.conf 文件中适用于最终用户的 Calendar Server HTTP 超时参数。
GSE 队列超时值
以下 ics.conf 文件参数以秒为单位指定 Calendar Server 扫描组计划引擎 (GSE) 队列中的传入作业之前等待的时间:
gse.belowthresholdtimeout = "3"
如果队列中的作业数目大于分配的最大线程数,最后一个线程始终会重新扫描队列。因此,此设置仅在作业数目少于分配的最大线程数时才有效。
默认值为 "3"。增加该值可以减少服务器扫描队列的频率,改进总体性能。但是,如果队列因事件数量的增加而变得太大,则可以减少该时间以加快处理队列。这有可能导致总体性能降低,但用于更新事件的时间会更短。
调优 Calendar Express 用户界面本节包含了有关用以下方式调优 Calendar Express 的说明:
使用“刷新视图”选项
“刷新视图”选项使用浏览器高速缓存中的日历数据来刷新视图,而无需从 Calendar Server 数据库进行更新,因此对于 Calendar Express 最终用户来说,可以提高系统性能。
要启用“刷新视图”选项,必须将 ics.conf 文件中的以下参数设置为 "yes":
browser.cache.enable = "yes"
如果重置此参数,必须停止并重新启动 Calendar Server 才能使新值生效。
为站点配置了“刷新视图”选项时,Calendar Express 将在“视图”选项卡的所有日历视图中显示“刷新视图”。
用户单击“刷新视图”时,Calendar Express 首先检查视图中的日历数据是否已更改,然后请求从日历数据库中进行更新。如果数据未发生更改,Calendar Express 将使用浏览器高速缓存中的信息刷新视图。从而避免了不必要的日历数据库请求,这对于具有大量事件或任务的日历特别有用。
如果事件或任务已更改,Calendar Express 将从日历数据库请求更新来刷新视图。这样,用户也可以使用“刷新视图”来确保 Calendar Express 总是显示最新的日历数据。
禁用工具栏重绘选项
在用户单击“刷新”时,工具栏重绘选项将重画(刷新)Calendar Express 视图。但有些时候,此选项可能会引发性能问题,因为 Calendar Server 需要对工具栏执行 XML 和 XSLT 转换才能刷新视图。
要禁用工具栏重绘选项,请将 ics.conf 文件中的以下参数设置为 "no":
ui.toolbar.repainting.enable="no"
如果将 ui.toolbar.repainting.enable 设置为 "no",在任何视图上单击“刷新”,用户都将返回 Calendar Express 的默认视图。
将 ui.toolbar.repainting.enable 设置为 "no" 可改进性能,因为 Calendar Express 不必为工具栏执行 XML 和 XSLT 转换。
如果浏览器高速缓存选项(browser.cache.enable 参数)被设置为 "yes",将不使用工具栏重绘选项。
客户端浏览器中的 XSL 渲染
Calendar Server 通过将 XSLT 处理下载到最终用户的浏览器上来执行客户端渲染,从而减少了必须由 Calendar Server 完成的处理。只有在浏览器能够渲染 XSLT 处理时,Calendar Server 才可以下载 XSLT 处理。在当前发行版中,只有 Internet Explorer 6.0 才支持此功能。
测试表明,客户端渲染可以将用户界面 (UI) 的可伸缩性提高 4 到 6 倍,这意味着 Calendar Server 可以在不必显著降低 CPU 性能的情况下同时支持大约 4 到 6 倍的最终用户。
ics.conf 文件中的以下参数控制客户端渲染(当前仅适用于 Internet Explorer 6.0 或更高版本):
render.xslonclient.enable="yes"
默认情况下此参数被设置为 "yes"。要关闭客户端渲染,请将此参数设置为 "no",然后重新启动 Calender Server。