Sun Java System Calendar Server 6.3 管理指南

第 21 章 調校 Calendar Server 效能

本章包含調校 Calendar Server 效能的概念資訊及說明。

若要提昇 Calendar Server 的效能,請考量以下選項:

21.1 為 LDAP 目錄伺服器建立索引

若要提昇 Calendar Server 存取 LDAP 目錄伺服器時的效能,請為以下屬性增加索引至 LDAP 配置檔案。

icsCalendar

此屬性用於為行事曆使用者或資源搜尋預設行事曆。請指定存在 (pres)、平等 (eq) 及子字串 (sub) 索引類型。

icsCalendarOwned

此屬性用於搜尋由使用者所有的其他行事曆。請指定存在 (pres)、平等 (eq) 及子字串 (sub) 索引類型。另請參閱21.2 提昇 DWP 環境中的行事曆搜尋效能

mail, mailAlternateAddress

這些屬性指定使用者的主要和替代電子郵件位址。另請參閱14.1 建立行事曆使用者 LDAP 項目14.5.4.3 利用 Calendar Server 公用程式增加行事曆服務

如需有關增加目錄伺服器索引的資訊,請參閱 Directory Server 文件,位於:

http://docs.sun.com/coll/1316.1http://docs.sun.com/coll/1419.1

21.2 提昇 DWP 環境中的行事曆搜尋效能

當您處於 DWP 環境 (即行事曆資料庫分佈在多個後端伺服器上) 中時,搜尋行事曆資料庫中的行事曆可能會比較費時。先在 LDAP 項目中查找並直接找出行事曆常駐的 DWP 主機會較快。

本小節包含以下主題:

Procedure啟用行事曆搜尋以查看 LDAP

若要啟用行事曆搜尋以首先查看 LDAP 目錄,然後再查看行事曆資料庫,請執行以下步驟:

  1. 以具有配置權限的管理員身份登入。

  2. 透過發出 stop-cal 指令來停止 Calendar Server 服務。

  3. 移至配置目錄 /etc/opt/SUNWics5/cal/config

  4. ics.conf 檔案中的 service.calendarsearch.ldap 參數設定為 "yes" (預設值),如下所示:

    service.calendarsearch.ldap="yes"

  5. 重新啟動行事曆服務,如下所示﹕

    start-cal


    備註 –

    如果您要允許匿名存取公開行事曆,建議您停用行事曆搜尋查看 LDAP。實際上,Communications Express 要求參數值為 “no”。


Procedure透過建立索引提昇搜尋效能

  1. 若要確定是否可以透過建立索引提昇行事曆搜尋效能,請嘗試以下 LDAP 指令:


    ldapsearch -b "base" "(&(icscalendarowned=*user*)
       (objectclass=icsCalendarUser))"

    其中 base 為 Calendar Server 的使用者和資源資料所在的目錄伺服器的 LDAP 基底 DN,user 為一般使用者可在搜尋對話方塊中輸入的值。

    測試表明,如果包含 60,000 個項目,在沒有為 icsCalendarOwned 建立索引的情況下,上述搜尋大約需要 50 到 55 秒鐘。而建立索引後,上述搜尋僅需大約 1 到 2 秒鐘。

  2. 透過執行 comm_dssetup.pl 為適當的 LDAP 屬性建立索引,或至少為 icsCalendarOwned 建立索引。

    comm_dssetup.pl 為此屬性和很多其他屬性建立索引,以用多種方法提昇效能。如果您尚未執行 comm_dssetup.pl 或執行了卻未執行建立索引,則可以再次執行該公用程式或使用 Directory Server 工具建立索引。

    如需有關 comm_dssetup.pl 如何建立索引,請參閱「Sun Java System Communications Suite 5 Installation and Configuration Guide」中的「Attribute Indexes」。

    如需有關增加目錄伺服器索引的資訊,請參閱 Directory Server 文件,位於:

    http://docs.sun.com/coll/1316.1http://docs.sun.com/coll/1419.1

21.3 透過停用萬用字元搜尋提昇行事曆搜尋效能

依預設,Calendar Server 中停用萬用字元搜尋。也就是說,當您使用圖形化使用者介面搜尋行事曆時,或者當您在自訂介面發出 search_calprops.wcap 時,它將搜尋與使用 WCAP 指令傳送的搜尋字串精確相符的內容。

如果您已透過對 ics.conf 檔案中的以下行取消註釋 (透過移除開頭的驚嘆號「!」) 啟用萬用字元搜尋,則可能會對效能起負面影響。

!service.calendarsearch.ldap.primaryownersearchfilter = "(&(|(uid=*%s*)(cn=*%s*))(objectclass=icsCalendarUser))"

若要測試萬用字元搜尋對效能的影響,請在行首插入驚嘆號 (「!」) 以再次為其做註釋。

21.4 提昇 CLD 外掛程式的效能

系統必須先確定用於儲存使用者行事曆的後端機器,然後才能從行事曆資料庫中存取行事曆。為找到適當的後端機器,系統將搜尋使用者項目的 LDAP 目錄並挑選出 icsDWPHost 屬性。此搜尋很費時,並且每次存取行事曆資料時均必須執行此搜尋。每個使用者階段作業均會多次存取資料庫,因此要多次搜尋 LDAP。若要節省時間並增強效能,請透過編輯 ics.conf 檔案來啟用 CLD 快取記憶體,如下所示:

caldb.cld.cache.enable="yes"

LDAP 資料快取記憶體儲存使用者 ID 及其相關的 icsDWPHost 屬性。在搜尋使用者項目的 LDAP 之前,系統會檢查快取記憶體上是否有該使用者 ID。如果快取記憶體上有該使用者 ID,系統將從儲存的 icsDWPHost 屬性中挑選出後端主機名稱。如果快取記憶體中沒有該使用者 ID,系統將執行 LDAP 搜尋並將使用者 ID 與屬性複製到 CLD 快取記憶體中。以後,存取該使用者行事曆資料的速度將加快,因為系統現在可以在快取記憶體中找到該使用者 ID。

21.5 提昇 LDAP 資料快取記憶體的效能

啟用 LDAP 資料快取記憶體後,您可以使用 ics.conf 參數對其進行調校。請調整下表中的一個或多個參數:


備註 –

依預設,已啟用 LDAP 資料快取記憶體。您可以透過設定以下參數將其停用: local.ldap.cache.enable="no"


表 21–1 用於自訂 LDAP 資料快取記憶體的 ics.conf 參數

參數 

說明/值 

local.ldap.cache

.checkpointinterval

檢查點執行緒在檢查點之間靜止的秒數。預設為 “60”

在高活動 LDAP 時,您可能要縮短間隔以儘可能保持快取記憶體現狀。同時,請記住,越是經常更新快取記憶體,系統讀取您的輸入越頻繁。 

local.ldap.cache.

circularlogging

指定處理完 LDAP 資料快取記憶體資料庫記錄檔後是否要將其移除。預設為 “yes”

請勿變更此參數,除非您有自訂的清除常式可以移除舊的記錄檔。 

local.ldap.cache.

logfilesizemb

指定檢查點檔案的最大大小 (百萬位元組)。預設為 "10" 百萬位元組。

如果您使用高活動 LDAP,此檔案可以在檢查點間隔結束之前填滿。根據實際情況,嘗試將值設定為一個與記錄實際大小接近的數字 

local.ldap.cache.

maxthreads

指定 LDAP 資料快取記憶體資料庫執行緒的最大數目。預設為 “1000”

在高活動 LDAP 時,您可能要增加執行緒的數目。這可能會增加 CPU 的利用率。僅當您的 LDAP 活動最少時降低檢查點數目。 

local.ldap.cache.

mempoolsizemb

指定共用記憶體的百萬位元組數目。預設為 “4” 百萬位元組。

local.ldap.cache.

entryttl

指定 LDAP 資料快取記憶體項目的「有效時間」(TTL) (以秒為單位)。預設為 “3600” 秒 (1 小時)。

如果您的快取記憶體填滿的太快 (高活動),則可以縮短 TTL 時間。但是,這可能會增加 LDAP 資料庫存取的整體數目,並因此整體減緩系統。 

local.ldap.cache.

cleanup.interval

指定各快取記憶體資料庫清除作業之間的間隔時間 (以秒為單位)。預設為 “1800” 秒 (30 分鐘)。

系統移除過期的項目。時間間隔不必與項目 TTL 時間相同。但是使之同步化將會更加有效。 

local.ldap.cache.

stat.enable

指定是否在記錄檔中記錄對 LDAP 資料快取記憶體的存取情況並列印統計資料。預設為 “no”

若要增強效能,請僅在除錯模式中使用此設定。 

local.ldap.cache.

stat.interval

指定各統計資料報告寫入記錄檔的間隔時間 (以秒為單位)。預設為 “1800” 秒 (30 分鐘)。

僅當 local.ldap.cache.stat.enable 啟用時才處於作用中。縮短間隔可以協助您準確地確定問題所在。增加間隔將會減緩系統載入。


備註 –

Communications Express 預期停用資料快取記憶體。


21.6 調校 LDAP SDK 快取記憶體

有一對控制項目在快取記憶體中的停留時間以及快取記憶體的大小的參數。

若要調校快取記憶體,請如下表所示編輯一個或多個參數。

表 21–2 用於配置 LDAP SDK 快取記憶體的 ics.conf 參數

參數 

說明和預設值 

service.ldapmemcachettl

目前未實作。您必須手動移除 ldap_cache 目錄的內容,然後重新啟動 Calendar Server。

如果 service.ldapmemcache"yes",則此參數用於設定快取項目的最大秒數。如果為 “0”,則對快取項目的時間沒有限制。預設為 "30"

service.ldapmemcachesize

如果 service.ldapmemcache"yes",則此參數用於設定快取記憶體將佔用的記憶體空間的最大數目 (以位元組為單位)。如果為 “0”,則快取記憶體無大小限制。預設為 “131072”

21.7 調校自動備份

您必須保持磁碟上備份的大小與所需之間的平衡以免超過可用磁碟空間。若要協助管理歸檔檔案備份與緊急備份佔用的磁碟空間,可以變更各種 ics.conf 參數的設定,這些參數決定您一次可保留的備份副本數量及觸發清除舊的副本的磁碟空間臨界值的位置。

有三種可以針對每個備份類型、歸檔檔案和緊急備份調整的參數類型

Calendar Server 在不超過磁碟臨界值的條件下在最多的可能天數內保持備份。因此,如果目前的備份使磁碟的使用率超過臨界值,系統將清除最舊的備份副本,並查看磁碟的使用率是否低於臨界值。系統會繼續清除舊的備份副本,直到符合以下任一情況:移除其他備份副本將導致磁碟上的備份數目小於最小備份副本數目,或磁碟空間的使用率低於臨界值。

因此,您可以使用臨界值參數管理備份使用的磁碟空間。相反,您也可以透過調整允許的磁碟空間和副本的大小來管理保持在磁碟上的備份數目。

下表列出了控制磁碟空間和保留在磁碟上的備份數目的 ics.conf 參數。

表 21–3 用於設定保持在磁碟上的備份的數目的 ics.conf 參數

ics.conf 參數

預設設定 

說明 

caldb.berkeleydb.hotbackup.mindays

緊急備份可保持在磁碟上的最少天數。 

caldb.berkeleydb.hotbackup.maxdays

緊急備份可保持在磁碟上的最多天數。 

caldb.berkeleydb.hotbackup.threshold

70 

用於緊急備份的磁碟空間百分比。當超過臨界值時,觸發清除舊的副本。 

caldb.berkeleydb.archive.mindays

歸檔備份可保持在磁碟上的最少天數。 

caldb.berkeleydb.archive.maxdays

歸檔備份可保持在磁碟上的最多天數。 

caldb.berkeleydb.archive.threshold

70 

用於歸檔檔案備份的磁碟空間百分比。當超過臨界值時,觸發清除舊的副本。 

21.8 使用跨多個 CPU 的負載平衡功能

依預設,Calendar Server 中會啟用負載平衡功能。Calendar Server 會使用以下演算法來完成負載平衡功能:程序會每 n 個連線接受一個連線,其中 n 是程序數目。

若要停用負載平衡功能,請將 service.http.loadbalancing 參數增加至 ics.conf 檔案,並將其設定為 "no"。然後重新啟動 Calendar Server,使變更生效。

21.9 控制為每個服務執行的程序數目

如果某台伺服器有多個 CPU,依預設 Calendar Server 會在這些 CPU 上分布 HTTP 服務 (cshttpd 程序) 和分散式資料庫服務 (csdwpd 程序)。

如果您想要控制為每個服務執行的程序數目,您可以編輯 service.http.numprocessesservice.dwp.numprocesses 參數。依預設,在安裝期間,這些參數設定為伺服器 CPU 的數目,但您可以重設這些值。例如,如果伺服器具有 8 個 CPU,但您希望 cshttpdcsdwpd 程序僅在 4 個 CPU 上執行,則將參數設定為:

service.http.numprocesses="4"
 service.dwp.numprocesses="4"

21.10 使用逾時值

本小節包含使用各種 ics.conf 參數的逾時值來調校 Calendar Server 效能的概念資訊及說明。

存在以下類型的逾時值﹕

如需有關編輯 ics.conf 參數的資訊,請參閱E.1 編輯 ics.conf 配置檔案

21.10.1 csadmind 的逾時值

下表說明 ics.conf 檔案中由管理 (csadmin) 服務使用的 Calendar Server 逾時參數。

表 21–4 管理服務 (csadmin) 的 HTTP 逾時值

參數 

說明 

service.admin.idletimeout

指定 csadmind 服務在使閒置的 HTTP 連線逾時之前等待的秒數。

預設為 120 秒 (2 分鐘)。 

service.admin.resourcetimeout

指定 csadmind 服務在使資源行事曆的 HTTP 階段作業逾時之前等待的秒數。

預設為 900 秒 (15 分鐘)。 

service.admin.sessiontimeout

指定 csadmind 服務在使 HTTP 階段作業逾時之前等待的秒數。

預設為 1800 秒 (30 分鐘)。 

21.10.2 一般使用者的 HTTP 逾時值

下表說明 ics.conf 檔案中套用於一般使用者的 Calendar Server HTTP 逾時參數。

表 21–5 ics.conf 中用於一般使用者的 HTTP 逾時值 (cshttpd 服務)

參數 

說明 

service.http.idletimeout

指定 cshttpd 服務在使閒置的 HTTP 連線逾時之前等待的秒數。

預設為 "120" 秒 (2 分鐘)。

service.http.resourcetimeout

指定 cshttpd 服務在使資源行事曆的 HTTP 階段作業逾時之前等待的秒數。

預設為 "900" 秒 (15 分鐘)。

service.http.sessiontimeout

指定 cshttpd 服務在使 HTTP 階段作業逾時之前等待的秒數。

預設為 "1800" 秒 (30 分鐘)。

21.10.3 GSE 佇列逾時值

以下 ics.conf 檔案參數指定在 Calendar Server 為內送工作掃描群組排程引擎 (Group Scheduling Engine, GSE) 佇列之前需要等待的時間 (以秒為單位):

gse.belowthresholdtimeout="3"

如果佇列中的工作多於所配置執行緒的最大數目,則最後一個執行緒將始終重新掃描工作佇列。因此,僅當工作數目小於所配置執行緒的最大數目時,此設定才能生效。

預設為 "3"。增大此數目會減少伺服器掃描佇列的頻率並提昇整體效能。但是,如果由於事件量的增加而使佇列變得過大,可以減少時間,以允許更快處理佇列。這可能會導致降低整體效能,但事件將會更快更新。