美文网首页
strace命令调试JVM Thread

strace命令调试JVM Thread

作者: springzzj | 来源:发表于2020-01-21 15:26 被阅读0次

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

    确定Java进程ID
    ps -aux | grep "java"
    

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


    image
    确定JVM线程ID

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


    image
    strace attch线程

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


    image
    总结

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

    相关文章

      网友评论

          本文标题:strace命令调试JVM Thread

          本文链接:https://www.haomeiwen.com/subject/dveezctx.html