監視工具
ThingWorx 平台是基於 Java 技術所開發。本部份內容介紹的診斷與監視工具在設計上用來從 Java 虛擬機器 (JVM) 收集效能指標及其他資料。您可使用這些工具來透過 JVM 層監視您的 ThingWorx 應用程式。這些工具會從 JVM 取得下列資料:
記憶體操作 - 檢查伺服器是否已獲分配足夠的記憶體資源,以及 JVM 記憶體回收 (GC) 操作花費的時間。
執行緒效能 - 檢查是否有任何較長交易或執行緒問題可能導致您的 ThingWorx 應用程式中發生效能問題。
PTC System Monitor (PSM)
PTC System Monitor (PSM) 是由 Dynatrace 提供技術支援的一個應用程式效能監視系統。PTC 已針對 ThingWorx 應用程式的監視需求自訂 Dynatrace。PSM 為系統管理員提供一些工具,可用來偵測、診斷及修復影響應用程式操作健康狀況的問題。它會監視測試與生產系統,但不會影響 ThingWorx 應用程式的效能。此模組作為維護合約的一部份提供,不需要購買額外授權即可進行核心平台監視。
PSM 會監視在 JVM 層級發生的執行緒層級活動,並將此活動提取為稱為 PurePaths 的專有技術。PSM PurePath 包含有關伺服器上 ThingWorx 服務執行路徑以及執行時間的詳細資訊。它也包含前後關聯資訊,例如已執行的 SQL 陳述式。
PSM 的功能
PSM 可讓您:
增加應用程式在失敗之前的運作時間:
當突破臨界值時 (例如當 CPU 使用量較高時) 傳送通知。這可讓管理員在問題演變成全系統範圍的問題之前採取矯正動作來解決問題。
提供系統資源使用量的歷史檢視。這可協助您預估系統資源的未來容量需求。
提升監視能力:
使用簡化的可自訂儀表板,總結系統與元件的健康狀況。
提供對個別交易、使用者與伺服器元件的深入功能,以取得更多詳細資訊。
包含影響系統健康狀況之問題的整合事件清單。
即時提升對資料的診斷功能:
使用 PurePath 技術來即時收集診斷資料並記錄歷史效能指標。
消除在使用其他詳細資訊設定重新產生問題及藉助於 PTC 技術支援疑難排解問題時所耗費的時間。
PSM 會持續收集並記錄 ThingWorx 應用程式的即時資料,並將此資料儲存較長的時間。PSM 所收集的資料可讓您連續監視影響自訂應用程式的下列效能指標。這可協助您的開發小組或 PTC 支援服務重現導致效能問題的事件:
JVM 記憶體效能
使用 PurePath 時間資料的服務執行時間
作業系統記憶體、CPU 及資料庫查詢指標
ThingWorx 記錄檔錯誤及其他事件
直接 JVM 監視
直接 JVM 監視工具由 Oracle 或 ThingWorx 資源工具延伸功能提供。這些工具可與 PSM 一起使用,以取得詳細的效能資料。如果您不使用 PSM,直接從 JVM 收集資料是識別及修正效能問題的一個很好的替代方法。建議您監視 ThingWorx 應用程式的下列 JVM 診斷:
使用「記憶體回收」記錄 (這是 JVM 的一個內建功能) 來監視一段時間的記憶體效能。
使用 ThingWorx 支援工具延伸功能進行執行緒層級收集與分析。
監視 ThingWorx 伺服器的記憶體使用量
Java 虛擬機器 (JVM) 使用記憶體回收行程 (GC) 以原生方式管理它自己的記憶體 (堆集)。GC 可識別並移除 Java 堆集中未使用的物件。您可以記錄由 GC 收集的詳細資訊,來監視 ThingWorx 伺服器的記憶體使用量。
您可以使用 GC 記錄檔來識別記憶體消耗的趨勢。您可根據趨勢來檢查是否應變更 Apache Tomcat 伺服器的上限堆集參數,以取得更好的效能。因此,建議在 Apache Tomcat 伺服器上設定 GC 的記錄。
JVM 擁有在執行時間呼叫的旗標。這些旗標可用來編寫有關 GC 事件的統計資訊,例如 GC 事件的類型、在事件開始時耗用的記憶體量、由 GC 事件所釋放的記憶體量,以及 GC 事件的持續時間。
每次啟動 JVM 時,GC 記錄檔都會遭到覆寫。建議您在伺服器重新啟動時備份記錄檔。如此可協助您分析是否是記憶體使用量導致伺服器重新啟動。
您可使用例如 GCEasy.io 與 Chewiebug GC Viewer 這類的分析工具,分析來自記憶體回收的記錄檔。
如何在 Linux (setenv.sh) 上設定記憶體回收記錄
執行下列步驟來在 Linux 上設定記憶體回收行程記錄:
1. 在文字編輯器中開啟 $CATALINA_HOME/bin/setenv.sh 指令集。
setenv.sh 指令集檔案可能無法在所有安裝中提供。如果此檔案不存在,請在該位置建立一個新 setenv.sh 檔案。
2. 將下列文字附加到 JAVA_OPTS 變數結尾,並加上雙引號。
-XX:+UseG1GC -Xloggc:/logs/gc.log -XX:+PrintGCTimeStamps -XX:+PrintGCDetails
如果未在 setenv.sh 檔案中指定 JAVA_OPTS,或者如果 setenv.sh 檔案為新檔案,請在檔案中新增以下一行:
JAVA_OPTS=”-XX:+UseG1GC -Xloggc:/logs/gc.log -XX:+PrintGCTimeStamps -XX:+PrintGCDetails”
請注意以下事項:
-XX:+PrintGC 選項會傳回較不詳細的輸出記錄檔。例如,輸出記錄檔包含下列詳細資訊:
2017-10-10T13:22:49.363-0400: 3.096: [GC (Allocation Failure) 116859K->56193K(515776K), 0.0728488 secs]
-XX:+PrintGCDetails 選項會傳回詳細的輸出記錄檔。例如,輸出記錄檔包含下列詳細資訊:
2017-10-10T13:18:36.663-0400: 35.578: [GC (Allocation Failure) 2017-10-10T13:18:36.663-0400: 35.578: [ParNew: 76148K->6560K(76672K), 0.0105080 secs] 262740K->193791K(515776K), 0.0105759 secs] [Times: user=0.02 sys=0.00, real=0.01 secs]
3. setenv.sh 指令集結尾新增以下幾行。此程式碼會在啟動 Apache Tomcat 伺服器之前自動備份現有 gc.out 檔案到 gc.out.restart
# Backup the gc.out file to gc.out.restart when a server is started.
if [ -e "$CATALINA_HOME/logs/gc.out" ]; then
cp -f "$CATALINA_HOME/logs/gc.out" "$CATALINA_HOME/logs/gc.out.restart"
fi
4. 儲存檔案的變更。
5. 使用適用于您作業系統的服務控制器重新啟動 Apache Tomcat 服務。
如何在 Windows (Apache Service Manager) 上設定記憶體回收記錄
執行下列步驟來在 Windows 上設定記憶體回收行程記錄:
1. 在「Windows 檔案總管」中,流覽至 <Tomcat_home>\bin
2. 啟動名稱中包含 w 的可執行檔。例如,Tomcat<version number>w.exe
3. 按一下 Java 標籤。
4. 「Java 選項」欄位中,新增下列幾行:
-Xloggc:logs/gc_%t.out
-XX:+PrintGCTimeStamps
-XX:+PrintGCDateStamps
-XX:+PrintGCDetails
如需有關 -XX:+PrintGC-XX:+PrintGCDetails 選項之間的相關資訊,請參閱「如何在 Linux (setenv.sh) 上設定記憶體回收記錄」部份。
5. 按一下「套用」,儲存服務組態的變更。
6. 「一般」標籤中,按一下「停止」
7. 按一下「開始」,重新啟動 Apache Tomcat 服務。
新的記憶體回收記錄檔即會寫入到 %CATALINA_HOME%\logs\gc_<Tomcat_Restart_Timestamp>.out 檔案。
使用支援工具延伸功能收集診斷資料
ThingWorx 支援工具延伸功能用來收集 ThingWorx 技術支援的相關資訊。當對 ThingWorx 應用程式中的問題進行疑難排解時,會用到此資訊。此延伸功能會收集下列診斷資料:
Java 執行緒傾印 - 在特定時間於 Java 虛擬機器上執行之所有執行緒的相關詳細資訊。它可以記錄指定期間的執行緒活動。
Java 堆集傾印 - 特定時間的 Java 虛擬機器的堆集空間中所有物件的相關詳細資訊。
PTC 建議在您的 ThingWorx 實例上安裝此延伸功能。此延伸功能可在 support.ptc.com 的「PTC 軟體下載」頁中找到。
VisualVM 及其他 JMX 監視工具
VisualVM 是一個監視工具,可收集 Java 應用程式的資料。您可以使用 VisualVM 來監視 ThingWorx 應用程式。它會收集有關記憶體與 CPU 使用量的資訊。它會產生及分析堆集傾印並追蹤記憶體流失。您可針對在本機或遠端電腦執行的應用程式收集資料。
VisualVM 提供一個介面,可讓您以圖形方式檢視 Java 應用程式的相關資訊。
VisualVM 可與 Java JDK 一起使用。如需有關 VisualVM 連線設定的詳細資訊,請參閱 ThingWorx 說明中心內的 (Apache Tomcat Java 選項設定) Apache Tomcat Java 選項設定部份。
使用 Java Management Extensions (JMX) 與 JVM 整合的其他工具也提供類似的監視功能。
VisualVM 會捕捉下列會影響應用程式效能的關鍵指標:
JVM 記憶體效能
執行執行緒所需的時間
作業系統記憶體與 CPU 指標
資料庫連線集區監視
VisualVM 會追蹤即時資料大約 20 分鐘。
ThingWorx 應用程式記錄檔監視
應定期監視 ThingWorx 應用程式記錄檔,以找出錯誤或其他異常操作。這些錯誤可能在平台層發生,也可能在與 ThingWorx 搭配使用的自訂指令集中發生。建議您每天檢閱錯誤記錄檔中的訊息。
配置記錄子系統選項以寫入錯誤的堆疊追蹤
「記錄子系統」中的「啟用堆疊追蹤」選項會將錯誤訊息與關聯的堆疊追蹤寫入記錄檔。依預設,不會將「記錄子系統」配置為將堆疊追蹤 (呼叫堆疊) 寫入磁碟。設定「啟用堆疊追蹤」選項,將例外與錯誤訊息的呼叫堆疊寫入位於 ThingworxStorage/logs 資料夾的 ErrorLog.log 檔案。建議設定此選項,以在偵錯時在堆疊追蹤中擁有函數呼叫的詳細資訊。
保留應用程式記錄檔
記錄層級決定應在記錄檔中顯示多少粒度。除非您主動對問題進行疑難排解,否則建議將應用程式的記錄層級保留為最低詳細資訊,例如「資訊」「警告」。當您將記錄詳細資訊增加至「偵錯」「追蹤」「全部」時,請小心。這可能會對 ThingWorx 的效能產生負面影響。如果平台上可用的資源不足,則可能會導致應用程式發生意外行為。
記錄檔會以單獨的檔案儲存在伺服器上的 /ThingworxStorage/logs 資料夾中。記錄檔會封存在 logs 資料夾下的 archives 資料夾中。記錄輪換規則以在記錄子系統「記錄保留設定」中設定的檔案大小與時間配置為基礎。這些設定可在執行時間變更及套用。
您可以在「系統」 > 「子系統」 > 「記錄子系統」 > 「組態」中指定下列變換配置:
檔案大小 - 當記錄檔大小達到或超過在「以 KB 計的最大檔案大小」欄位中定義的大小時,會將其封存起來。記錄檔的預設檔案大小設定為 100000 KB。您可以設定的最大檔案大小為 1000000 KB。
時間 - 當觸發記錄事件時,檔案會在每天午夜變換。記錄檔會移至 archives 資料夾。依預設,若記錄檔留存在 archives 資料夾中的時間超過七天,系統會予以刪除。可以在「最大封存日數」欄位中變更預設值。您可以指定 1 到 90 天。
監視記錄檔大小很重要。先備份檔案,或記錄檔中包含過時資訊時予以捨棄,可持續清除記錄檔。