6 - JMeter JMXMon插件监控JVM

JMeter JMXMon插件监控JVM

一、 添加JMXMon插件

1.下载JMXMon插件

访问网址:http://www.jmeter-plugins.org/

方法一:下载jmeter-plugins-manager-0.11.jar(目前版本为0.11),放到jmeter/lib/ext目录下,重启启动jmeter后可以在Options->Plugins Manager的Availab Plugins中勾选下载JMXMon Sample Collector:

 

方法二:点击Documentation->JMXMon Sample Collector,点击Download下载JMXMon的jar包,放到jmeter的lib/ext文件夹下:

二、 配置JVM监控

1.配置JVM监控参数

在被测Java应用上增加Java参数:-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.port=1099

一般Java参数在/etc/profile中间中定义,如:

因此只需将上面开启jmx监控的参数添加在这里即可,保存后执行source /etc/profile以即时生效,重启待测Java程序后执行netstat -antp|grep 1099,可以看到端口已经开放(本截图中1099端口已经连接),且就是待测Java程序启动的:

2.添加JMXMon监控

在jmeter里添加listener->jp@gc – JMXMon Samples Collector,点击“Add Row”按钮可以添加JVM的监控:

 

 

Label:填写监控图表里的曲线名称。

URL:填写被测JVM的JMX连接地址,一般格式为service:jmx:rmi:///jndi/rmi://YOURHOST:6969/jmxrmi或者service:jmx:rmi://YOURHOST:JMXPORT/jndi/rmi://YOURHOST:JMXPORT/jmxrmi

Object Name:填写监控的具体对象名称。

Attribute:填写监控的具体属性。

Key:如果是复杂类型的属性,还需要填写Key。

Delta:未找到解释,需要查看JMXMon源码。

Retry:测试过程中连接断开后是否重连。

Object Name等参数的填写需要结合jconsole来确定,举例来说:

jmeter监控服务器10.104.90.204上的一个tomcat上运行的程序,URL中填写:service:jmx:rmi:///jndi/rmi://10.104.90.204:1099/jmxrmi

如果希望监控JVM Heap大小,则启动jconsole连接到这个tomcat上:

切换到MBean页签,展开java.lang,选中Memory,将右侧的ObjectName填写到JMXMon的Object Name中:

 

选中下面的“属性”,右侧包括需要监控的HeapMemoryUsage属性,HeapMemoryUsage填写到JMXMon的Attribute中:

 

HeapMemoryUsage属于复杂类型的属性,因此它的值不是一个数值,双击它的值可以展开显示,used填到JMXMon的Key中:

 

JMXMon添加的监控如下:

 

一般常用的监控如下:

Lable: HeapMemoryUsage-Used

Object Name: java.lang:type=Memory

Attribute: HeapMemoryUsage

Key: used

 

Lable: NonHeapMemoryUsage-Used

Object Name: java.lang:type=Memory

Attribute: NonHeapMemoryUsage

Key: used

 

Lable: CMS Old Gen-Usage

Object Name: java.lang:type=MemoryPool,name=CMS Old Gen

Attribute: Usage

Key: used

 

Lable: CMS Perm Gen-Usage

Object Name: java.lang:type=MemoryPool,name=CMS Perm Gen

Attribute: Usage

Key: used

 

Lable: Par Eden Space-Usage

Object Name: java.lang:type=MemoryPool,name=Par Eden Space

Attribute: Usage

Key: used

 

Lable: Par Survivor Space-Usage

Object Name: java.lang:type=MemoryPool,name=Par Survivor Space

Attribute: Usage

Key: used

 

Lable: ConcurrentMarkSweep-CollectionCount

Object Name: java.lang:type=GarbageCollector,name=ConcurrentMarkSweep

Attribute: CollectionCount

 

Lable: ParNew-CollectionCount

Object Name: java.lang:type=java.lang:type=GarbageCollector,name=ParNew

Attribute: CollectionCount

 

Lable: Threading-ThreadCount

Object Name: jjava.lang:type=Threading

Attribute: ThreadCount

 

 

3.执行JMXMon监控

GUI下执行测试场景后JMXMon里添加的jmx监控指标就会实时显示:

如果在non-GUI模式下需要在JMXMon插件中指定保存结果文件,不能通过-l参数生成结果文件,-l生成的结果文件中不包含插件里添加的采集结果。结果保存的文件名可以做参数化,例如:JMXMon_test_${__time(yyyy-MM-dd HH:mm,)}.jtl,可根据测试执行的年月日时分自动生成结果文件。


猜你喜欢

转载自blog.csdn.net/warm77/article/details/80534625