1. 程式人生 > >《JVM 監控之 tomcat 啟動 監控功能》

《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:

使用者名稱-許可權檔案:  指定jmx 使用者名稱和許可權

    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 遠端連線