• jstack的使用


    到jdk的安装目录的bin目录下

    执行jstack -l 2574 > /opt/proda/j.txt(将对应的文件dump到服务器的某个目录中)

    排查CPU使用率过高,某个进程中哪个线程使用率高。

    网址:http://www.cnblogs.com/skyaccross/archive/2012/12/22/2829000.html 分析java程序中cpu占用过高的线程 skyaccross。

    比如排查消息网关CPU使用率高。

    1)先确定消息网关的进程PID。该PID为11436.

     

    2)通过top -H -p PID确定进程PID中哪些线程使用CPU高。如下,11801和10245使用CPU相对就高。

     

    3)dump当前的进程的堆栈。

    [root@hs7 bin]# sudo -u node ./jstack 11436 > /tmp/dump11436

     

    4)将线程的pid 转成16进制,比如11801 = 0x2E19

       到第一步dump出来的 11436.stack 里面找0x2E19 就知道是哪个线程了

     

     

    从而知道是http-bio-8581-Acceptor-0和RMI TCP Connection(259)-172.16.101.69线程占用较高的CPU。

     

     

    http-bio-8581-exec-281

    "http-bio-8581-exec-902" #952 daemon prio=5 os_prio=0 tid=0x00007f5688ba4000 nid=0x1e75 waiting on condition [0x00007f5436526000]

       java.lang.Thread.State: WAITING (parking)

             at sun.misc.Unsafe.park(Native Method)

             - parking to wait for  <0x0000000082714110> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)

             at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)

             at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)

             at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)

             at org.apache.tomcat.util.threads.TaskQueue.take(TaskQueue.java:104)

             at org.apache.tomcat.util.threads.TaskQueue.take(TaskQueue.java:32)

             at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1074)

             at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134)

             at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)

             at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)

             at java.lang.Thread.run(Thread.java:748)

    "http-bio-8581-exec-148" #198 daemon prio=5 os_prio=0 tid=0x00007f56885aa000 nid=0x1b80 waiting on condition [0x00007f5469ad9000]

       java.lang.Thread.State: WAITING (parking)

             at sun.misc.Unsafe.park(Native Method)

             - parking to wait for  <0x0000000082714110> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)

             at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)

             at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)

             at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)

             at org.apache.tomcat.util.threads.TaskQueue.take(TaskQueue.java:104)

             at org.apache.tomcat.util.threads.TaskQueue.take(TaskQueue.java:32)

             at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1074)

             at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134)

             at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)

             at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)

             at java.lang.Thread.run(Thread.java:748)

     

    "RMI TCP Connection(216)-172.16.101.69" #2077 daemon prio=5 os_prio=0 tid=0x00007f98cc006800 nid=0x78c1 runnable [0x00007f9922bfb000]

       java.lang.Thread.State: RUNNABLE

             at java.net.SocketInputStream.socketRead0(Native Method)

             at java.net.SocketInputStream.socketRead(SocketInputStream.java:116)

             at java.net.SocketInputStream.read(SocketInputStream.java:171)

             at java.net.SocketInputStream.read(SocketInputStream.java:141)

             at java.io.BufferedInputStream.fill(BufferedInputStream.java:246)

             at java.io.BufferedInputStream.read(BufferedInputStream.java:265)

             - locked <0x0000000082c7d508> (a java.io.BufferedInputStream)

             at java.io.FilterInputStream.read(FilterInputStream.java:83)

             at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:550)

             at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:826)

             at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:683)

             at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler$$Lambda$5/436481274.run(Unknown Source)

             at java.security.AccessController.doPrivileged(Native Method)

             at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:682)

             at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)

             at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)

             at java.lang.Thread.run(Thread.java:748)

    "RMI TCP Connection(218)-172.16.101.203" #2081 daemon prio=5 os_prio=0 tid=0x00007f98cc007800 nid=0x78c5 runnable [0x00007f96cebb0000]

       java.lang.Thread.State: RUNNABLE

             at java.net.SocketInputStream.socketRead0(Native Method)

             at java.net.SocketInputStream.socketRead(SocketInputStream.java:116)

             at java.net.SocketInputStream.read(SocketInputStream.java:171)

             at java.net.SocketInputStream.read(SocketInputStream.java:141)

             at java.io.BufferedInputStream.fill(BufferedInputStream.java:246)

             at java.io.BufferedInputStream.read(BufferedInputStream.java:265)

             - locked <0x0000000082c1c5a8> (a java.io.BufferedInputStream)

             at java.io.FilterInputStream.read(FilterInputStream.java:83)

             at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:550)

             at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:826)

             at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:683)

             at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler$$Lambda$5/436481274.run(Unknown Source)

             at java.security.AccessController.doPrivileged(Native Method)

             at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:682)

             at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)

             at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)

             at java.lang.Thread.run(Thread.java:748)

    "RMI TCP Connection(217)-172.16.101.203" #2075 daemon prio=5 os_prio=0 tid=0x00007f98cc005800 nid=0x78bf runnable [0x00007f96cedb2000]

       java.lang.Thread.State: RUNNABLE

             at java.net.SocketInputStream.socketRead0(Native Method)

             at java.net.SocketInputStream.socketRead(SocketInputStream.java:116)

             at java.net.SocketInputStream.read(SocketInputStream.java:171)

             at java.net.SocketInputStream.read(SocketInputStream.java:141)

             at java.io.BufferedInputStream.fill(BufferedInputStream.java:246)

             at java.io.BufferedInputStream.read(BufferedInputStream.java:265)

             - locked <0x0000000082c84038> (a java.io.BufferedInputStream)

             at java.io.FilterInputStream.read(FilterInputStream.java:83)

             at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:550)

             at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:826)

             at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:683)

             at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler$$Lambda$5/436481274.run(Unknown Source)

             at java.security.AccessController.doPrivileged(Native Method)

             at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:682)

             at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)

             at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)

             at java.lang.Thread.run(Thread.java:748)

    "VM Thread" os_prio=0 tid=0x00007f996808a800 nid=0x7095 runnable

  • 相关阅读:
    应用Dubbo框架打造仿猫眼项目 理解微服务核心思想
    慕课网--docker走进第一个javaweb应用
    金融行业微服务架构解析-转载炼数成金架构模块金融行业微服务架构解析
    StringEscapeUtils防止xss攻击详解
    尚硅谷 dubbo学习视频
    【面试篇】寒冬求职之你必须要懂的Web安全
    echo "" > 和 echo "" >> 的区别
    python函数、模块、包
    python学习笔记(7)--循环语句
    python学习笔记(6)--条件分支语句
  • 原文地址:https://www.cnblogs.com/seamy/p/16048339.html
Copyright © 2020-2023  润新知