2014-09-13 57 views
2

我正在tomcat上運行Web應用程序。當有大量請求被觸發時,Tomcat進程就會掛起。由於這是一個生產Web應用程序,我無法一直監控手動獲取tomcat java進程/線程轉儲。自動化Tomcat線程/堆轉儲以作進一步分析

我已經啓用了JMX遠程端口上的tomcat

-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=2222 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=true

我的問題是:當Tomcat進程打高CPU [線程數] /內存使用率/有紅,在那個時間點我們可以自動收集tomcat線程轉儲到所需的磁盤位置[命令行或編程]?

+0

生產機器上'jmx'用'SSL = FALSE'?好工作。 – 2014-09-13 10:47:40

+0

這是一個示例參數,用於打開我指定的jmx端口。 – Ashoka 2014-09-13 10:53:47

回答

0

This article解釋瞭如何安排自動線程轉儲。我建議去看看。

0

這些選項:

JAVA_OPTS='-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/path/to/dir'

會使核心轉儲時啓動Tomcat運行的內存。

另外-verbose:gc選項在這種情況下可能會有用。

B.2.3 -verbose:gc選項

-verbose:gc選項,使垃圾回收(GC) 信息記錄。它可以與其他HotSpot VM特定選項 (如-XX:+PrintGCDetails-XX:+PrintGCTimeStamps)結合使用,以獲得有關GC的更多信息 。信息輸出包括每個GC之前和之後的代的大小,堆的總大小,提升的對象的大小以及所花費的時間。

Troubleshooting Guide for HotSpot VM > Command-Line Options