我们已经看到使用Collectd监控CPU /内存利用率(本文)。但它没有提供所有信息来确定性能问题的瓶颈。在本文中,我们将使用Collectd Java插件来使用其JMX技术来监视和管理Java虚拟机(JVM)。
目标:
使用Java的JMX技术监视和管理Java虚拟机(JVM)。
建筑:
我们的高级架构如下所示 - 我们将监控所有应用服务器,JMeter服务器和JMeter-master的JVM。
JMX(Java托管扩展):
JMX是在Java 5.0发行版中引入的,用于在运行时管理/监视资源。使用JMX,我们将能够监视内存使用情况,垃圾收集,加载的类,线程数等随着时间的推移。这是性能工程中更有用的信息。更多信息在这里。
如上图所示,使用JMX连接器,JConsole / Collectd等客户端与MBean服务器通信,以获取我们感兴趣的应用程序的度量标准。
JConsole的:
JConsole是一个用于监视JVM的GUI工具。它附带Java JDK。让我们看看它如何帮助我们监控JMeter。[我假设你安装了JDK]
- 启动JMeter
- 打开一个简单的测试计划/创建一个。
- 转到Java JDK Home / bin文件夹
- 启动JConsole.exe
- 它将显示正在运行的Java应用程序列表。选择ApacheJMeter.jar并连接。如果出现此对话窗口,请单击“不安全连接”
- 运行JMeter测试。
- JConsole显示内存使用情况,线程数[ 不要与JMeter的线程数混淆 ],加载类等
- 单个选项卡提供更多信息,如GC。
监控远程过程:
- 当我们在上面监视本地进程(ApacheJMeter.jar)时,JConsole也可用于监视远程进程(远程进程可能是您的tomcat服务器/ JMeter-server)
- 应为远程进程设置某些属性,以便client / JConsole可以与JMX API通信以获取信息。在启动java进程时,传递以下属性。
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=6969
-Dcom.sun.management.jmxremote.rmi.port=6969
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
- 如果您正在运行docker容器,请确保还使用了以下属性。
-Djava.rmi.server.hostname=${HOST_IP}
- 要收集jmeter-server jmx指标,我在下面设置环境变量并启动jmeter-server.sh
export JVM_ARGS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=6969 -Dcom.sun.management.jmxremote.rmi.port=6969 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"
- 对于Tomcat:
CATALINA_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=6969 -Dcom.sun.management.jmxremote.rmi.port=6969 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"
- 只需将上述参数传递给java进程即可启用JMX监控。
- 现在,JConsole可以使用以下服务URL连接到远程JMX。
service:jmx:rmi:///jndi/rmi://hostname:6969/jmxrmi
Collectd Java插件:
JConsole是一个很好的工具。但它不保留历史数据。我们已经使用Collectd来监控我们的jmeter-servers和app服务器的CPU和内存利用率。我们可以使用Collectd的Java和JMX插件将JMX指标收集到InfluxDB中。
请先阅读本文关于collectd的用法。
我将在collectd配置文件中添加以下部分。
重启collectd服务。等几分钟来收集一些指标。
获得此数据后,最后一步将在Grafana中创建一个仪表板来创建图形。
摘要:
使用Collectd插件,以及CPU和内存利用率,我们还可以将JMX指标收集到InfluxDB中。使用Grafana,我们可以可视化,性能测试结果(最小值,最大值,平均响应时间,吞吐量等),JMX度量(堆内存使用,加载的类计数,线程数,GC)和其他指标,如所有的CPU和内存利用率JMeter服务器,App服务器。
原文地址:https://www.cnblogs.com/a00ium/p/10381299.html