2.3 效能調整

效能調整是一個複雜的問題。 Identity Manager 使用者應用程式依賴於具有許多互動的不同技術。 無法預料所有可能造成效能不佳的單一組態案例或使用者互動案例。 不過,某些子系統是可增進效能的最佳作法。 對這些問題的具體討論如下。

2.3.1 記錄

使用者應用程式允許透過 Novell Audit 和開放原始碼 Apache log4j 架構進行記錄。 預設會關閉透過 Novell Audit 的記錄。 不過,預設會啟用透過 log4j 的檔案和主控台記錄。

附註:在本指南稍後的節 5.0, 設定記錄節 12.0, 記錄組態中,您可以瞭解到可記錄的事件類型,以及如何啟用或停用記錄。

log4j 組態設定位於 $IDMINSTALL/jboss/server/IDMProv/conf/ 下稱為 log4j.xml 的檔案中。您可以在此檔案的底部附近,找到下列項目:


<root>     <priority value="INFO" />     <appender-ref ref="CONSOLE" />     <appender-ref ref="FILE" /> </root>

root 指定值可確保任何未明確指定層級的記錄附加程式會繼承 root 層級 (在此情況下為 INFO)。 例如,在預設狀態下,FILE 附加程式並沒有指定的限定值層級,所以它會採用根部的限定值層級。

log4j 可能使用的記錄層級是 DEBUG、INFO、WARN、ERROR 和 FATAL (如 org.apache.log4j.Level 類別中所定義)。 不注意適當使用這些設定會導致效能的嚴重損失。

您最好只在除錯特定問題時才使用 INFO 或 DEBUG。

除非 (如上所述) 您正在除錯某些項目,否則未設定層級限定值之根部中包含的任何附加程式都應將限定值設為 ERROR、WARN 或 FATAL。

與訊息的冗長相比,在 log4j 中主控台和檔案記錄涉及同步寫入對高記錄層級的效能影響較大。 您可以使用 AsyncAppender 類別,但使用它並不能保證較好的效能。 在 http://logging.apache.org/log4j/docs/api-1.2.8/org/apache/log4j/performance/Logging.html 中,會說明這些問題 (這些是眾所周知的問題,是 Apache log4j 問題,而不是 Identity Manager 問題)。

使用者應用程式之記錄設定檔案中的預設值 INFO (如上所述) 適用於很多環境,但是因為效能十分重要,所以您應考慮將上述 log4j.xml 項目變更為:

<root> <priority value="ERROR"/> <appender-ref ref="FILE"/> </root>

換句話說,移除 CONSOLE 並將記錄層級設為 ERROR。 針對完整測試/除錯的生產設定,不需要在 INFO 層級記錄,也不需要啟用 CONSOLE 記錄。 關閉這些項目可以明顯改進效能。

如需 log4j 的相關資訊,請參閱位於 http://logging.apache.org/log4j/docs 的文件。

如需搭配使用 Novell Audit 和 Identity Manager 的相關資訊,請參閱《Novell Identity Manager 管理指南》。

2.3.2 Identity Vault

LDAP 查詢可能會在大量使用的目錄伺服器環境中造成瓶頸。 為了保持大量物件的高效能,Novell eDirectory (做為 Identity Manager 中身份儲存區的基礎) 經常記錄所申請的資訊,並將其儲存在索引中。 針對其屬性已編製索引的物件執行複雜查詢時,查詢的傳回速度會更快。

依預設 eDirectory 會隨附下列已編製索引的屬性:

Aliased Object Name cn dc Equivalent to Me extensionInfo Given Name GUID ldapAttributeList ldapClassList Member NLS: Common Certificate Obituary Reference Revision Surname uniqueID uniqueID_SS 

當您安裝 Identity Manager 時,預設目錄綱要會延伸為具有與使用者應用程式相關的新物件類別類型和新屬性。 在預設狀態下,不會對使用者應用程式特定的屬性編製索引。 為了取得更好的效能,您可以為上述的某些屬性 (或許還有一些其他傳統的 LDAP 屬性) 編製索引,尤其是您的使用者容器包含的物件超過 5000 個時。

一般而言,僅對已知為經常查詢的那些屬性編製索引 (不同的生產環境中屬性也有所不同)。確切瞭解經常使用之屬性的唯一方式是:在執行時期收集述詞統計資料 (不過,收集程序本身會降低效能)。

在《eDirectory 管理指南》中會詳細討論收集述詞統計資料的程序。 還會詳細討論編製索引的相關資訊。 通常,您將需要進行下列幾項操作:

  • 使用 Console One 啟用相關屬性的述詞統計資料收集
  • 將系統置於載入狀態下
  • 停用統計資料收集並分析結果
  • 為每種可能從中獲益的屬性編製索引

如果您已經知道要為哪些屬性編製索引,則不需要使用 Console One。 您可以透過「eDirectory 維護」>「索引」,在 iManager 中建立和管理索引。 例如,如果您瞭解組織圖的使用者很可能會根據 isManager 屬性執行查詢,則可以嘗試為該屬性編製索引,以查看是否會增強效能。

附註:建議的最佳作法是至少建立 managerisManager 屬性的索引。

如需屬性索引建立和效能的進一步討論,請參閱 Peter Kuo 和 Jim Henderson 所著之《Novell eDirectory 疑難排解指南》(QUE Books,ISBN 0-7897-3146-0) 中的「調整 eDirectory」一章。

另請參閱主要《eDirectory 管理指南》中的「維護 Novell eDirectory」一章 (具有效能調整指導)。

2.3.3 JVM

配置至 Java 虛擬機器的堆積記憶體數會影響效能。 如果您指定的最小或最大記憶體值過低或過高 (過高表示多於機器的實體記憶體),則您可能會經歷過量的頁檔案交換。

您可以在文字編輯器中編輯 [IDM]/jboss/bin/ 下的 run.confrun.bat 檔案 (前者針對 Linux,後者針對 Windows),以設定 JBoss 伺服器的最大 Java 虛擬機器 (Java Virtual Machine,JVM) 大小。 將 “-Xmx” 從 128m 增加為 512m,或儘可能更高。 可能需要一些試驗來決定特定環境的最佳設定。

附註:您可以在 http://wiki.jboss.org/wiki/Wiki.jsp?page=JBossASTuningSliming 中找到 JBoss 和 Tomcat 效能調整秘訣。

2.3.4 會期逾時值

您可以在 IDM.war 歸檔的 web.xml 檔案中變更會期逾時 (在伺服器導致會期逾時警告對話方塊出現之前,使用者可讓頁面在其 Web 瀏覽器中處於無人管理狀態的時間)。 您應該調整此值,以符合要執行應用程式的伺服器和使用環境。 通常,建議會期逾時越小越好。如果業務需求可以容忍 5 分鐘的會期逾時,則伺服器會以較逾時值為 10 分鐘時早兩倍的時間釋放未使用的資源。 這可讓 Web 應用程式的效能和可調整性更好。

調節會期逾時時,請考慮下列各項:

  • 如果很多使用者在較短的時間內登入,則較長的會期逾時可能會導致 JBoss 伺服器執行的記憶體不足。 具有過多開放會期的任何應用程式伺服器都會發生這樣的情況。
  • 當使用者登入使用者應用程式時,會為使用者建立 LDAP 連接並結合至會期。因此,開啟的會期越多,保留的 LDAP 連接數就越大。 會期逾時越長,保持連接開啟的時間就越長。LDAP 伺服器的開放連接過多 (即使它們閒置) 會導致系統效能降低。
  • 如果伺服器開始經歷 OutOfMemoryErrors,且針對伺服器和使用環境,已將 Java 虛擬機器 (JVM) 的堆積和垃圾回收調整參數做了最佳調整,則應考慮降低會期逾時。

若要調節會期逾時值,您需要開啟 IDM.war 歸檔,在其中找到 web.xml 檔案,並編輯該檔案的下列部份 (特別是此處顯示為 20 的數值表示 20 分鐘,它是預設值):

<session-config>     <session-timeout>20</session-timeout> </session-config>

然後,您需要儲存檔案和歸檔,然後重新啟動伺服器。

附註:最好由具備 Java Web 應用程式開發和部署經驗的人員來手動編輯 Web 歸檔檔案。