《JVM 監控之 tomcat 啟動 監控功能》
使用Jdk 自帶的 jconsole 和 jvisualvm 工具能很方便地監控java 應用程式所佔用jvm 的記憶體,執行緒等。通常我們所說的tomcat 伺服器, 其實也就是java 的 一個應用程式而已, 它也是通過java 啟動的。 所以,如果我們想要監控tomcat 所佔用的jvm 記憶體, 執行緒等情況,需要在tomcat 啟動引數做響應的配置。 監控本地的tomcat 是比較簡單,不需要進行額外的配置, 直接使用jconsole 連線本地指定埠即可, 但是如果想監控遠端的tomcat
伺服器,那麼則需要修改tomcat 啟動引數。
筆者地測試環境為cetos 6.5 , tomcat 為 8.0.5. 不僅tomcat 可以設定, jboss 也可以設定的,方式大同小異。
一 無密碼方式
此種方式比較簡單, 直接catalina.sh 啟動指令碼即可, 配置檔案位置: $tomcat_home/bin/catalina.sh, 修改片段如下:
1) 修改 tomcat 配置
配置詳情:
# 如果是啟動命令,則設定jvm 監控埠 if [ $1 = start ] ; then # 設定記憶體,最大1024M, 最小128M JAVA_OPTS="$JAVA_OPTS -Xms128m -Xmx1024m -Xss1024K -XX:PermSize=512m -XX:MaxPermSize=512m"; # 設定jmx 是否通過ssl 連線 JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.ssl=false" # 設定rmi 遠端連線ip 地址 JAVA_OPTS="$JAVA_OPTS -Djava.rmi.server.hostname=192.168.145.100" # 設定jmx 遠端連線埠號 JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.port=8180" # 設定jmx 遠端連線是否需要使用者認證,即使用者名稱和密碼 JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.authenticate=false" fi
2) 啟動tomcat 伺服器 : $tomcat_home/bin/startup.sh
3) 使用jconsole 遠端連線
4) 開始監控
二 有密碼方式
jvm 的遠端監控密碼其實是由jdk 決定的,而不是由tomcat 決定的。 tomcat 只能設定是否啟動使用者認證功能和指定密碼檔案位置,但是jmx 的使用者名稱密碼和使用者許可權還是由jdk 來管理的。在jdk 安裝目錄的: $JAVA_HOME/jre/lib/management 下有以下幾個配置檔案:
jmxremote.access:
jmxremote.password.template: 使用者名稱-密碼檔案: 使用者名稱和密碼的模板檔案
management.properties: 預設使用者名稱許可權檔案和使用者名稱密碼檔案為 $JAVA_HOME/jre/lib/management/ 目錄下的 jmxremote.access 和 jmxremote.password 檔案,
可以在 此配置檔案中修改
需要複製jmxremote.password.template 檔案為 jmxremote.password, 並將許可權置為 600, 才可以能生效。
1. 修改配置檔案:
2. 找到進入 jdk 目錄下 $JAVA_HOME/jre/lib/management, 複製檔案並修改許可權
3. jmxremote.access 新增使用者 admin 並賦予只讀許可權, 檔案末尾追加一行即可: admin readonly
4. jmxremote.password 中為admin 使用者設定密碼, 檔案末尾新增一行即可: admin 123456
5. 啟動tomcat: $tomcat_home/bin/startup.sh
6. 使用jconsole 遠端連線