Sun Java System Calendar Server 管理指南 |
第 19 章
优化 Calender Server 的性能要改进 Sun Java System Calendar Server 的性能,请考虑使用以下方法:
为 LDAP 目录服务器编制索引要改进 Calendar Server 访问 LDAP 目录服务器时的性能,请在 LDAP 配置文件中添加以下属性的索引:
- icsCalendar 属性,用于搜索日历用户或资源的默认日历。指定存在 (pres)、等式 (eq) 和子串 (sub) 索引类型。
- icsCalendarOwned 属性,用于在启用了 LDAP CLD 插件时搜索订阅操作。指定存在 (pres)、等式 (eq) 和子串 (sub) 索引类型。请参阅提高日历搜索在 DWP 环境中的性能。
- mail 和 mailAlternateAddress 属性,用于指定用户的主电子邮件地址和备用电子邮件地址。请参阅必需的 mail 属性 和电子邮件别名(mailalternateaddress 属性)。
注意:如果通过运行 Directory Server 设置脚本 (comm_dssetup.pl) 来配置 Directory Server 5.x,则该脚本将为 icsCalendar 和 icsCalendarOwned 属性添加索引。
有关添加目录服务器索引的信息,请参阅位于以下 Web 站点的 Directory Server Configuration, Command, and File Reference:
http://docs.sun.com/db/coll/S1_ipDirectoryServer_51
提高日历搜索在 DWP 环境中的性能如果您将日历数据库存储在多个后端服务器中,即在 DWP 环境中时,日历搜索将会非常费时。如果先在 LDAP 条目中查找,然后直接找出该日历所在的那个 DWP 主机,日历搜索的速度将会更快。
要启用日历搜索,以实现先在 LDAP 目录中搜索然后再搜索日历数据库,请确保按下面的显示设置 ics.conf 文件中的以下参数(同时也是默认设置):
service.calendarsearch.ldap = "yes"
如果要启用 LDAP 目录的日历搜索功能,则可以通过以下方法改进搜索性能:
为 icsCalendarOwned 属性编制索引
要确定是否可以改进 LDAP 目录服务器的日历搜索性能,请尝试以下 LDAP 命令:
ldapsearch -b "base"
"(&(icscalendarowned=*user*)(objectclass=icsCalendarUser))"其中,base 是 Calendar Server 用户和资源数据所在目录服务器的 LDAP 基本 DN,user 是最终用户可以在“Calendar Express 订阅”->“日历搜索”对话框中输入的值。
测试表明,如果没有为 icsCalendarOwned 编制索引,上述搜索功能搜索 60,000 个条目大约需要 50 到 55 秒。编制索引后,上述搜索只需要大约 1-2 秒时间。
在 Directory Server 中,请在 Solaris 系统上使用以下命令为 icsCalendarOwned 属性创建索引:
server5/bin/slapd db2index -D slapd-serverID
-t icsCalendarOwned:eq,pres,sub:2.16.840.1.113730.3.3.2.11.1其中,slapd-serverID 是 slapd-serverID 目录的完整路径。
设置 nsSizeLimit 和 nsLookthroughLimit 参数
LDAP 目录服务器配置中的 nsSizeLimit 和 nsLookthroughLimit 参数必须足够大,使搜索能够正确完成。
要确定是否为这些参数设置了适当的值,请尝试以下命令:
ldapsearch -b "base"
"(&(icscalendarowned=*user*)(objectclass=icsCalendarUser))"其中,base 是 Calendar Server 用户和资源数据所在目录服务器的 LDAP 基本 DN,user 是最终用户可以在“Calendar Express 订阅”->“日历搜索”对话框中输入的值。
如果 LDAP 服务器返回错误信息,可能是由于参数 nsSizeLimit 或 nsLookthroughLimit 的值不够大。请按以下原则设置这些参数:
启用 CLD 高速缓存选项
要优化对 LDAP 的搜索性能,请按下面的显示设置 CLD 高速缓存选项(“yes”为默认值):
caldb.cld.cache.enable = ìyes
另请参阅使用 CLD 高速缓存选项。
使用 LDAP 数据高速缓存选项LDAP 数据高速缓存选项用来确保提交 LDAP 数据后可以立即使用该数据,即使将 LDAP 目录服务器配置为提交的数据需经过一段延迟后才能使用。
例如,如果您的站点上部署了主/从 LDAP 配置,其中,Calendar Server 通过从属 LDAP 目录服务器访问主 LDAP 目录,导致 LDAP 数据在提交一段时间后方可用。LDAP 数据高速缓存可以确保 Calendar Server 客户端获得准确的 LDAP 数据。
本节包含以下主题:
使用 LDAP 数据高速缓存的注意事项
按照以下原则决定您的站点是否需要配置 LDAP 数据高速缓存:
- 如果您站点上的 Calendar Server 直接访问主(或根)LDAP 目录服务器,并且提交的 LDAP 数据在可用之前没有延迟,则无需配置 LDAP 数据高速缓存。确保将 local.ldap.cache.enable 参数设置为 no(默认值)。
- 如果您的站点上已部署了主/从 LDAP 配置,其中 Calendar Server 是通过从属 LDAP 目录服务器访问主 LDAP 目录,从而导致提交 LDAP 数据后需经一段时间延迟方可使用,则需要配置 LDAP 数据高速缓存,以确保最终用户获得最新数据。
主/从 LDAP 配置
主/从 LDAP 配置包含一个主 (root) 目录服务器和一个或多个从属(用户或拷贝)目录服务器。Calendar Server 可直接访问或通过从属目录服务器访问主 LDAP 目录服务器:
在上述第二种配置中,由于提交的数据需要经过一段延迟方可在从属目录服务器上可用,因此可能会出现 LDAP 数据不准确的问题。
例如,Calendar Server 提交了 LDAP 数据更改,但由于主目录服务器更新每个从属目录服务器而造成延迟,导致新数据在一段时间后才可用。随后的 Calendar Server 客户端操作使用旧 LDAP 数据并显示旧视图。
如果更新从属目录服务器的延迟较短(只有几秒钟),客户端可能不会出现问题。然而,如果延迟较长(几分钟或几小时),客户端在延迟过程中将显示不准确的 LDAP 数据。
表 19-1 列出了受到主/从 LDAP 服务器配置中延迟影响的 LDAP 属性,在此配置中,Calendar Server 通过从属 LDAP 目录服务器访问主 LDAP 目录服务器。
要确保最终用户获得最新的 LDAP 数据,请按照以下小节的介绍配置 LDAP 数据高速缓存:LDAP 数据高速缓存和 LDAP 数据高速缓存配置参数。
LDAP 数据高速缓存
LDAP 数据高速缓存通过为 Calendar Server 客户端提供最新的 LDAP 数据解决了主/从 LDAP 配置问题,即使主目录服务器还未更新每个从属目录服务器。
如果启用了 LDAP 数据高速缓存,Calendar Server 会将已提交的 LDAP 数据写入高速缓存数据库(ldapcache.db 文件)。默认情况下,LDAP 高速缓存数据库位于 cal_svr_base/var/opt/SUNWics5/csdb/ldap_cache 目录中,但如果需要,也可以配置其他位置。
客户端更改每个用户的 LDAP 数据时,Calendar Server 会将更改后的数据写入 LDAP 高速缓存数据库(同时也写入从属目录服务器)。随后的客户端操作将从高速缓存数据库中检索 LDAP 数据。此数据检索应用于单个用户的以下操作:
从而,LDAP 数据高速缓存数据库可提供:
- 单一系统上多个进程间的数据一致性 — 多处理器系统上的所有 Calendar Server 进程均可使用该数据库。
- 多个用户会话中的数据持久性 — 该数据库永久存在并且无需刷新。可以为 LDAP 数据高速缓存条目配置生存时间 (TTL) 和清除数据库的时间间隔。有关详细信息,请参阅 LDAP 数据高速缓存配置参数。
限制
LDAP 数据高速缓存不提供:
LDAP 数据高速缓存配置参数
表 0-2 介绍了 ics.conf 文件中有关 LDAP 数据高速缓存的配置参数。
警告 如果没有正确关闭 Calendar Server 或正在运行 Calendar Server 的服务器,则请手动删除 ldap_cache 目录中的所有文件,以避免因任何数据库损坏而导致以后重新启动时出现问题。
使用 CLD 高速缓存选项如果要与 CLD 插件一起使用,请确保将 ics.conf 文件中的以下配置参数设置为 "yes"(这是每个参数的默认值):
caldb.cld.cache.enable = "yes"
此参数用来启用 CLD 高速缓存选项。此高速缓存选项用于存储日历用户的 DWP 主机服务器信息(icsDWPHost LDAP 属性),从而减少对 LDAP 目录服务器的调用。
以下是您可能要设置的其他 CLD 高速缓存选项参数:
有关这些参数和其他相关 ics.conf 参数的详细信息,请参阅附录 E“Calendar Server 配置参数”
对会话数据库使用基于内存的文件系统要改进 Calendar Server 在 Solaris 系统上的性能,可以通过设置 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 的超时值
表 19-1 介绍了 ics.conf 文件中由管理服务 (csadmin) 使用的 Calendar Server 超时参数。
最终用户的 HTTP 超时值
表 19-2 介绍了 ics.conf 文件中适用于最终用户的 Calendar Server HTTP 超时参数。
GSE 队列超时值
以下 ics.conf 文件参数以秒为单位指定 Calendar Server 扫描组计划引擎 (GSE) 队列中的传入作业之前等待的时间:
gse.belowthresholdtimeout = "3"
如果队列中的作业数目大于分配的最大线程数,最后一个线程始终会重新扫描队列。因此,此设置仅在作业数目少于分配的最大线程数时才有效。
默认值为 3。增加该值可以减少服务器扫描队列的频率,改进总体性能。但是,如果队列因事件数量的增加而变得太大,则可以减少该时间以加快处理队列。这有可能导致总体性能降低,但用于更新事件的时间会更短。
使用“刷新视图”选项“刷新视图”选项使用浏览器高速缓存中的日历数据来刷新视图,而无需从 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 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 可支持 4 到 6 倍同时操作的最终用户,而不会显著降低 CPU 的性能。
ics.conf 文件中的以下参数控制客户端渲染(当前仅适用于 Internet Explorer 6.0 或更高版本):
render.xslonclient.enable="yes"
默认情况下此参数被设置为“yes”。要关闭客户端渲染,请将此参数设置为“no”,然后重新启动 Calender Server。