最近遇到個Jboss的性能問題,爲了排查問題方便,決定開啓JMX,使用jconsole進行實時監控來分析性能。配置步驟如下:
詳情見:https://docs.jboss.org/author/display/WFLY8/JMX+subsystem+configuration
1、配置服務端:
a、分析WildFly的工具Jconsole,位置:${JBOSS_HOME}/bin/jconsole.sh;
該腳本實際是調用JDK自身jconsole.jar、tools.jar和WildFly自身jboss-cli-client.jar,詳情見腳本jconsole.sh
b、打開${JBOSS_HOME}/modules/system/layers/base/org/wildfly/extension/io/main/module.xml,添加如下紅色標記三行
<dependencies>
<module name="sun.jdk"/>
<module name="org.jboss.staxmapper"/>
<module name="org.jboss.as.controller"/>
<module name="org.wildfly.security.manager"/>
<module name="org.jboss.as.server"/>
<module name="org.jboss.as.security" optional="true"/>
<module name="org.jboss.msc"/>
<module name="org.jboss.logging"/>
<module name="org.jboss.xnio"/>
<module name="org.jboss.xnio.nio" services="import"/>
<module name="org.picketbox" optional="true"/>
<module name="org.jboss.remoting" export="true"/>
<module name="org.jboss.remoting-jmx" export="true"/>
<module name="javax.api"/>
</dependencies>
c、打開${JBOSS_HOME}/domain/configuration/domain.xml文件,修改每個profile的如下jmx標籤,添加紅色部分
<subsystem xmlns="urn:jboss:domain:jmx:1.3">
<expose-resolved-model/>
<expose-expression-model/>
<remoting-connector use-management-endpoint="false"/>
</subsystem>
注以上兩步已在8.1.0版本中修復,無需修改!!!
2、添加監控用戶:
a、 使用${JBOSS_HOME}/bin/add-user.sh添加Application User,此處必須爲Application User
b、把創建的用戶在jboss管理控制檯中賦權,打開http://10.19.xx.xx:9990控制檯
c、上述三步執行完成後,重啓WildFly服務器,然後執行${JBOSS_HOME}/bin/jconsole.sh
3、使用遠程的jconsole或者jvisualvm監控:
a、本機安裝jdk,將jboss-client.jar下載下來(jboss的bin目錄下有)
b、運行jconsole,執行命令:jconsole -J-Djava.class.path="C:\Program Files (x86)\Java\jdk1.7.0_10\bin\jboss-client.jar;C:\Program Files (x86)\Java\jdk1.7.0_10\lib\jconsole.jar;C:\Program Files (x86)\Java\jdk1.7.0_10\lib\tools.jar"
輸入遠程調用service,例如:service:jmx:http-remoting-jmx://10.19.xx.xx:8080,填寫之前創建的用戶名和密碼即可
說明:端口即爲server的http服務端口,比如該host上創建了兩個server,server1端口爲8080,server2端口爲8180
如果輸入service:jmx:http-remoting-jmx://10.19.xx.xx:8080,即爲監控server1
如果輸入service:jmx:http-remoting-jmx://10.19.xx.xx:8180,即爲監控server2
如果輸入service:jmx:http-remoting-jmx://10.19.xx.xx:9990,即爲監控domain controller的JVM進程(此時必須填寫超級管理用戶和密 碼)
c、運行jvisualvm,執行命令:jvisualvm -cp:a "C:\Program Files (x86)\Java\jdk1.7.0_10\bin\jboss-client.jar"
配置和jconsole一致