背景
进行性能测试,需要统计 kairosdb 的性能随时间的变化情况。
分析
考虑过以下方法
sar 命令:可以检测机器的各项性能,但不能看进程的性能占用信息
top:可以监控到进程的性能信息,但没有趋势图
jvisualvm:可以监控到进程的性能信息,有趋势图;但可监控的时间范围受限、不能统计各项状态信息。如下:
最终发现jconsole 可以完美实现这个需求。之前只是感觉jconsoleg功能不如jvisualvm强大,所以没有去看…
jconsole 使用方法:
修改远程机器JDK配置文件 (我这里远程机器是linux).
a.进入JAVA_HOME\jre\lib\management\目录
b.拷贝jmxremote.password.template这个文件到当前目录, 并改名为 jmxremote.password
c.打开jmxremote.password文件,去掉 # monitorRole QED 和 # controlRole R&D 这两行前面的注释符号修改远程机器上需要被监控的程序的启动脚本:
JAVA_OPTS="-Djava.rmi.server.hostname=10.1.61.117 -Dcom.sun.management.jmxremote.port=18999 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"
启动脚本 的java 命令后加上 $JAVA_OPTS 参数。
本地建立连接,如下:
界面如下:
更多功能可自行尝试
可以保存统计数据 到本地(CSV 文件),如下:
总结
需求解决 (真是踏破铁鞋无觅处…)