Linux 持续监控进程资源使用情况相关命令

一、Linux 本地无界面监控:

1、使用 jmap 监控 java 对象数量增长:

jmap -histo:live ${pid} | grep ${className}
watch -d -n 60 'jmap -histo:live ${pid} | grep ${className} | tee -a watch_jmap.log'

2、 使用 watch 持续监控进程资源使用情况并输出到文件

每分钟记录一次进程资源使用情况,参数为 pid:

watch -d -n 60 'top -o %MEM -b -n 1 | grep 16515 | tee -a watch_mem.log'

3、 使用 watch 持续监控进程资源使用情况,过滤内容并输出到文件

编写脚本(vim watch_top.sh):

top -o %MEM -b -n 1 | grep "$1"| awk 'NR==1 {print " PID: "$1" \t MEM: "$6" \t %CPU: "$9"% \t %MEM: "$10"% \t TIME+: "$11" \t" strftime("%Y-%m-%d %H:%M:%S") }' | tee -a top_mem_"$1".log

每分钟记录一次进程资源使用情况,参数为 pid:

watch -d -n 60 ./watch_top.sh PID

4、查看进程启动时间以及运行时间

ps -eo pid,lstart,etime|grep 16515

二、jvm 远程监控

1、使用 JMX 远程监控
服务端:
服务端 jvm 启动时需要添加参数:

  • com.sun.management.jmxremote:开启 jmx 远程监控;
  • com.sun.management.jmxremote.port=port:指定开启 JMX/RMI 连接的端口;除了发布用于本地访问的 RMI 连接器之外,设置这个属性,还会在私有的只读注册表发布一个额外的 RMI 连接器,这个连接器运行在 port 端口,使用jmxrmi
  • com.sun.management.jmxremote.authenticate=false:关闭安全认证;
  • com.sun.management.jmxremote.ssl:关闭 SSL;
  • java.rmi.server.hostname:主机名,远程连接时,需要通过该主机名建立连接。默认为 localhost。
set JMX_OPTS=-Dcom.sun.management.jmxremote
set JMX_OPTS=%JMX_OPTS% -Dcom.sun.management.jmxremote.port=8888
set JMX_OPTS=%JMX_OPTS% -Dcom.sun.management.jmxremote.authenticate=false
set JMX_OPTS=%JMX_OPTS% -Dcom.sun.management.jmxremote.ssl=false
set JMX_OPTS=%JMX_OPTS% -Djava.rmi.server.hostname=192.168.1.2

set CLASSPATH=test.jar
java %JMX_OPTS% -classpath %CLASSPATH% org.example.StartUp

即:

java -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8888 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=192.168.1.2 -classpath test.jar  org.example.StartUp

可以通过 jps + jinfo 查看是否生效:

~$ jps
20308
22932 AgentLauncher
3428 StartUp
7780 RemoteMavenServer36
15368 test.jar
19848 Bootstrap
23548 Jps
:~$ jinfo -flags 3428
Attaching to process ID 3428, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.271-b09
Non-default VM flags: -XX:CICompilerCount=12 -XX:InitialHeapSize=536870912 -XX:+ManagementServer -XX:MaxHeapSize=8575254528 -XX:MaxNewSize=2858418176 -XX:MinHeapDeltaBytes=524288 -XX:NewSize=178782208 -XX:OldSize=358088704 -XX:+UnlockCommercialFeatures -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseFastUnorderedTimeStamps -XX:-UseLargePagesIndividualAllocation -XX:+UseParallelGC
Command line:  -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9999 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=192.168.1.2

客户端
使用 JVisualVM 连接(也可以使用 jconsole )。
右键 Remote 添加远程主机:
在这里插入图片描述
填入 java.rmi.server.hostname 指定的 ip:
在这里插入图片描述
右键添加的远程主机,添加 JMX 连接:
在这里插入图片描述
填写 com.sun.management.jmxremote.port 指定的端口号:
在这里插入图片描述
效果如下:
在这里插入图片描述
2、通过 jstatd 连接

三、参考

命令说明:

参考文档:

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

非理性地界生物

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值