基本性能檢查以確保最佳效能
每當遇到效能問題時,首先會執行基本性能檢查。 這些協助確保符合基本配置、維護需求,並協助識別是否有資源瓶頸。 Product Master隨附一組基本配置及維護準則。 您可以遵循下列準則,以協助避免一般效能問題。 本文件彙總如何使用 pimSupport.sh Script 來快速檢查建議的配置及維護狀態。
症狀
Product Master 提供慢速效能。原因
配置不正確,且存在許多舊版本列可能會導致效能變慢。診斷問題
每當您遇到效能問題時,第一個作業應該是回答下列問題:- 資料庫是否已正確配置?
- 現行表格和索引佈置是否符合預設綱目?
- 表格及索引統計資料是否為最新?
- 是否定期刪除舊版本?
- 快取是否已配置足夠的空間並顯示大於 97% 的快取命中率?
- 應用程式或資料庫伺服器端是否有任何 CPU 或記憶體相關瓶頸?
no,則您必須採取動作來更正狀況。- 如何驗證配置及維護性能
- 使用 pimSupport.sh Script 來執行基本性能檢查。 下面提供使用此 Script 及範例輸出的範例:
當使用者在系統上工作時,以及在您正常觀察效能問題的狀況下,最好執行 Script。 該 Script 會收集超出您可能需要的資訊,但在此基本性能檢查的環境定義中,您會在產生的保存檔$TOP/bin/pimSupport.sh -b ======================================= Software and System Stack: starting....Done Setup and Configuration: starting......Done Implementation & Deployment: starting..Done Runtime Statistics: starting...........Done ======================================= Collecting information on DB2 COMMON_INFO_COLLECT_INFO_SH WebSphere Application Server All results can be found in $TOP/tmp/pimSupport_MM_DD_YYYY__HH_MM.tar.gz file.../health_check/healthCheckResult.out中找到所有需要的資訊。
- 解譯基本性能檢查的 healthCheckResult.out 內容
- healthCheckResult.out 檔案的內容會隨著 IBM® Db2® 或 Oracle 是用作後端資料庫伺服器,以及 Script 執行所在的版次和版本而略有不同。
- 資料庫配置
With DB2 as backend DB server: ==================================================== Generating database configuration checklist... ==================================================== db2 DB2 v10.1 ==================================================== DB2_SKIPDELETED INSTALL GUIDE VALUE = NO/OFF FOR DB2 v10.1 : DATABASE SETTING OFF DB2_EVALUNCOMMITTED INSTALL GUIDE VALUE = NO/OFF FOR DB2 v10.1 : DATABASE SETTING OFF DB2_SKIPINSERTED INSTALL GUIDE VALUE = NO/OFF FOR DB2 v10.1 : DATABASE SETTING OFF DB2_PARALLEL_IO INSTALL GUIDE VALUE = * : DATABASE SETTING * mon_heap_sz INSTALL GUIDE VALUE = AUTOMATIC : DATABASE SETTING = AUTOMATIC 90 sheapthres INSTALL GUIDE VALUE = 0 : DATABASE SETTING = 0 dft_queryopt INSTALL GUIDE VALUE = 5 : DATABASE SETTING = 5 applheapsz INSTALL GUIDE VALUE = AUTOMATIC : DATABASE SETTING = AUTOMATIC CURRENT VALUE = 10240 .... With Oracle as backend DB server: oracle 11.2.0.1.0 ==================================================== db_block_size INSTALL_GUIDE_VALUE = 8192 DATABASE SETTING = 8192 query_rewrite_enabled INSTALL_GUIDE_VALUE = TRUE DATABASE SETTING = TRUE processes INSTALL_GUIDE_VALUE >= 200 DATABASE SETTING = 800 open_cursors INSTALL_GUIDE_VALUE >= 600 DATABASE SETTING = 600 db_cache_size INSTALL_GUIDE_VALUE = 0 OR >= 1 GB DATABASE SETTING = 0 shared_pool_size INSTALL_GUIDE_VALUE = 0 OR >= 200 MB DATABASE SETTING = 0 optimizer_index_caching INSTALL_GUIDE_VALUE = 90 DATABASE SETTING = 90 optimizer_index_cost_adj INSTALL_GUIDE_VALUE = 50 DATABASE SETTING = 50 GATHER_STATS_PROG INSTALL_GUIDE_VALUE = TRUE DATABASE SETTING = TRUE STATS ESTIMATE PERCENT INSTALL_GUIDE_VALUE = 100 DATABASE SETTING = 100
- 綱目驗證
- 從標題「索引」狀態開始,您會尋找已變更及遺漏「表格及索引」的報告。 如果未報告任何內容,則狀態是正確的。 如果報告中列出離差,則您必須釐清它們。附註: 您的環境必須符合預設資料庫綱目。 在大部分安裝中,這將確保最佳效能。
- 表格及索引統計資料
- 為了取得最佳效能,它必須是資料庫表格,且索引統計資料是最新的。 這可確保資料庫最佳化工具可以選擇最佳 (最快) 存取計劃,以擷取每一個 SQL 查詢的資料。
- 舊版本計數
- 隨著越來越多的舊版本橫列累積,整體效能可能會大幅降低。 因此,處理舊版本是一項重要的行政工作。 如需相關資訊,請參閱:您可以透過觀察 healthCheckResult.out中的「表格上的現行/舊列計數比例」區段,快速檢查在一段時間內是否累計了太多舊版本列。
對於選取的表格,會提供現行及舊版本列計數,以及現行/舊版本列計數的比例。 如果您看到表格 itm 或 itd 的現行版本列計數超過 100,000 ,且比例小於 0.3,則強烈建議刪除舊版本。current/old row count ratios on tables ==================================================== table name current version row count old version row count ratio current/old row count ---------- ------------------------- --------------------- --------------------------- noa 22117 49925 .44 nod 3673 7469 .49 noh 3342 6959 .48 icm 181523 164387 1.10 ita 1013552 988832 1.02 itm 95660 99404 .96 itd 95660 99403 .96
- 快取命中使用率
- Product Master 具有部分 Product Master 物件的內建快取機制。 確保高快取命中率可能是最佳效能的關鍵。如需相關資訊,請參閱 快取管理。HealthCheckResult.out 檔案在 "PIM CACHE SNAPSHOT" 區段中為您提供每一個服務之現行快取配置及使用率的快速概觀:
「現行快取大小」會顯示現行配置設定,而「快取大小上限」會顯示當時快取了多少物件。PIM CACHE SNAPSHOT: Title Current Max Cache Cache Hit C. Size C. Size Hits Requests Percentage ... --------------appsvr_LORIOT---------------- Spec Cache 400 126 15953 16089 99% Spec Key To Current Start Version Cache 400 257 15999 16287 98% Spec Key Version to Start Version Cache 400 13 0 6 0% Lookup Table Cache 500 24 1610 1636 98% Role Cache 2000 13 111872 111885 100% Access Cache 5000 0 0 0 0% Spec Name Cache 2000 7 29 37 78% Attribute Collections Cache 500 92 3335 3563 94% WSDL Cache 0 0 0 0 0% Workflow Definition Cache 250 3 63 67 94% Script Cache 1000 17 139 170 82% Catalog Cache 100 2 245 247 99% Catalog Definition Cache 2000 49 500 554 90% Node Id Cache 2000 127 800 927 86% View Cache 5000 35 865 954 91% ...每當您發現「快取大小上限」達到定義的上限,且常用快取上的「命中百分比」低於 95% 時,就應該反覆地增加每一個快取 (如 mdm-cache-config.properties 檔案中所定義) 的 maxElementsInMemory 設定 (只要有足夠的記憶體)。 快取是否高度使用,可由「快取命中」和「快取要求」值來判斷。
如果您需要監視快取命中使用率,則可以執行下列指令來觸發快取 Snapshot:$JAVA_RT com.ibm.ccd.common.wpcsupport.util.SupportUtil --cmd=getRunTimeCacheDetails
- 檢查資源使用率
- 在 Product Master 或資料庫伺服器端上的資源不足,可能會觸發尖峰使用時間期間的效能問題。 這可以是:
- 伺服器端 CPU 瓶頸
- 伺服器端記憶體瓶頸
top, topas, sar, vmstat或nmon。 要使用的選項取決於您的喜好設定。 基於監視目的,nmon可能更好,但需要安裝個別套件以取得相關資訊)。如果長時間 CPU 使用率超過 90% ,或伺服器開始交換記憶體,則您必須調查資源使用率過高的原因,並最終提供更多可用的資源。
如果部分 Product Master 服務 JVM 在上限上使用其記憶體,因而導致記憶體回收時間過長,也可能會出現效能問題。 healthCheckResult.out 檔案為您提供服務 JVM 記憶體配置詳細資料,以及每一個服務的一次記憶體用量 Snapshot。在 SETUP 和 CONFIGURATION 下,您會找到每一個 JVM (-Xmx) 的已配置記憶體大小上限,並且在 JVM LEVEL SERVICE MEMORY SNAPSHOT 區段中,您會看到針對每一個服務 JVM 所配置的記憶體數量、目前配置的記憶體數量以及使用中的記憶體數量。 如果「記憶體總計」和「已使用記憶體總計」接近所定義的 -Xmx 設定,則可能指出個別服務需要更多記憶體,且 -Xmx 設定需要增加。 只能透過執行下列指令來觸發 JVM 層次服務記憶體 Snapshot:== 2. SETUP and CONFIGURATION ----------------------------------------------------------------------------------------- PARAMETER VALUE SCHEDULER_MEMORY_FLAG -Xmx1024m -Xms48m QUEUEMANAGER_MEMORY_FLAG -Xmx64m -Xms48m APPSVR_MEMORY_FLAG -Xmx1024m -Xms256m ADMIN_MEMORY_FLAG -Xmx64m -Xms48m WORKFLOWENGINE_MEMORY_FLAG -Xmx1024m -Xms48m EVENTPROCESSOR_MEMORY_FLAG -Xmx64m -Xms48m JVM LEVEL SERVICE MEMORY SNAPSHOT: Service Short Name Service Type Total Mem(MB) Total Used Mem(MB) workflowengine_LORIOT workflowengine 73815 34535 scheduler_LORIOT scheduler 71584 30339 appsvr_LORIOT appsvr 268435 88690 queuemanager_LORIOT queuemanager 64601 26746 admin_LORIOT admin 50331 6327 eventprocessor_LORIOT eventprocessor 66647 28488$JAVA_RT com.ibm.ccd.common.wpcsupport.util.SupportUtil --cmd=getRunTimeMemDetails附註: 此指令不應以高間隔執行,因為它會在每一個 JVM 上觸發記憶體回收。如果 JVM 記憶體用量是一個問題,則需要設定更詳細的監視。 例如,針對個別服務啟用 verbose: gc。