strace命令_strace命令调试JVM Thread

在前一段的工作中遇到了JVM STW的问题,当时使用strace命令来查看JVM系统调用,本文将之前的操作步骤记录下来。

确定Java进程ID

ps -aux | grep "java"

结果如下,黄框内的就是进程的PID

946eed13c3a769f4f219af0f7e7c34d0.png

确定JVM线程ID

JVM中有很多线程,我们这里主要找控制safepoint的线程,也就是VM Thread。这里我们使用Jstack命令将JVM所有的进程都打出来,然后寻找其中的VM Thread。这里的nid就是线程ID(16进制表示),如图:

7ec2a44781125d3d6862ad517694ad6d.png

strace attch线程

182970是16进制线程ID转换过来的10进制格式,然后使用strace命令attach到该线程,就可以看到该线程的系统调用,加上-T参数后,每行会打印出来每条系统调用的耗时,单位是微秒。

ae75719c7acd52201a36a528a1bb7d50.png

总结

strace是一个运维经常用到的命令,常被用到来检测进程问题,往往一些比较诡异的问题可以通过strace找到有问题的系统调用,进而找到问题原因。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值