監視工具
ThingWorx Platform 是基於 Java 技術所開發。本部份內容介紹的診斷與監視工具在設計上用來從 Java 虛擬機器 (JVM) 收集效能指標及其他資料。您可使用這些工具來透過 JVM 層監視您的 ThingWorx 解決方案。這些工具會從 JVM 取得下列資料:
記憶體操作 - 檢查伺服器是否已獲分配足夠的記憶體資源,以及 JVM 記憶體回收 (GC) 操作花費的時間。
執行緒效能 - 檢查是否有任何較長交易或執行緒問題可能導致您的 ThingWorx 解決方案中發生效能問題。
直接 JVM 監視
直接 JVM 監測工具由 Oracle 或支援子系統提供。直接從 JVM 收集資料是識別及修正效能問題的一個很好的替代方法。建議您監視 ThingWorx 解決方案的下列 JVM 診斷:
使用「記憶體回收」記錄 (這是 JVM 的一個內建功能) 來監視一段時間的記憶體效能。
使用支援子系統進行執行緒層級收集與分析。
監視 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 變數結尾,並加上雙引號。
針對 Java 8:
-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”
針對 Java 9 及更新版本:
-Xlog:gc:file=/logs/gc.log:time,level,tags
如果未在 setenv.sh 檔案中指定 JAVA_OPTS,或者如果 setenv.sh 檔案為新檔案,請在檔案中新增以下一行:
JAVA_OPTS="-Xlog:gc:file=/logs/gc.log:time,level,tags"
請注意以下事項:
-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 選項」欄位中,新增下列幾行:
針對 Java 8:
-Xloggc:logs/gc_%t.out
-XX:+PrintGCTimeStamps
-XX:+PrintGCDateStamps
-XX:+PrintGCDetails
針對 Java 9 及更新版本:
-Xlog:gc:file=/logs/gc.log:time,level,tags
如需有關 -XX:+PrintGC-XX:+PrintGCDetails 選項之間的相關資訊,請參閱「如何在 Linux (setenv.sh) 上設定記憶體回收記錄」部份。
5. 按一下「套用」,儲存服務組態的變更。
6. 「一般」標籤中,按一下「停止」
7. 按一下「開始」,重新啟動 Apache Tomcat 服務。
新的記憶體回收記錄檔即會寫入到 %CATALINA_HOME%\logs\gc_<Tomcat_Restart_Timestamp>.out 檔案。
使用支援子系統收集診斷資料
如需相關資訊,請參閱支援子系統
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 的效能產生負面影響。如果ThingWorx Platform 上可用的資源不足,則可能會導致解決方案發生意外行為。
記錄檔會以單獨的檔案儲存在伺服器上的 /ThingworxStorage/logs 資料夾中。記錄檔會封存在 logs 資料夾下的 archives 資料夾中。記錄輪換規則以在記錄子系統「記錄保留設定」中設定的檔案大小與時間配置為基礎。這些設定可在執行時間變更及套用。
您可以在「系統」 > 「子系統」 > 「記錄子系統」 > 「組態」中指定下列變換配置:
檔案大小 - 當記錄檔大小達到或超過在「以 KB 計的最大檔案大小」欄位中定義的大小時,會將其封存起來。記錄檔的預設檔案大小設定為 100000 KB。您可以設定的最大檔案大小為 1000000 KB。
時間 - 當觸發記錄事件時,檔案會在每天午夜變換。記錄檔會移至 archives 資料夾。依預設,若記錄檔留存在 archives 資料夾中的時間超過七天,系統會予以刪除。可以在「最大封存日數」欄位中變更預設值。您可以指定 1 到 90 天。
監視記錄檔大小很重要。先備份檔案,或記錄檔中包含過時資訊時予以捨棄,可持續清除記錄檔。
這是否有幫助?