linux 进程 性能监控

背景

进行性能测试,需要统计 kairosdb 的性能随时间的变化情况。

分析

考虑过以下方法
sar 命令:可以检测机器的各项性能,但不能看进程的性能占用信息
top:可以监控到进程的性能信息,但没有趋势图
jvisualvm:可以监控到进程的性能信息,有趋势图;但可监控的时间范围受限、不能统计各项状态信息。如下:

最终发现jconsole 可以完美实现这个需求。之前只是感觉jconsoleg功能不如jvisualvm强大,所以没有去看…

jconsole 使用方法:

  1. 修改远程机器JDK配置文件 (我这里远程机器是linux).
    a.进入JAVA_HOME\jre\lib\management\目录
    b.拷贝jmxremote.password.template这个文件到当前目录, 并改名为 jmxremote.password
    c.打开jmxremote.password文件,去掉 # monitorRole QED 和 # controlRole R&D 这两行前面的注释符号

  2. 修改远程机器上需要被监控的程序的启动脚本:

    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 参数。

  3. 本地建立连接,如下:

界面如下:

更多功能可自行尝试

可以保存统计数据 到本地(CSV 文件),如下:

总结

需求解决 (真是踏破铁鞋无觅处…)