linux中查看cpu过高其中一种方式

  1. top 命令,获取cpu过高的进程id,27643 。
  2. ps -mp 27643 -o THREAD,tid,time 命令获取线程id,27644
ps -mp 27643 -o THREAD,tid,time
USER     %CPU PRI SCNT WCHAN  USER SYSTEM   TID     TIME
mhbtest  76.4   -    - -         -      -     - 00:00:51
mhbtest   0.0  19    - futex_    -      - 27643 00:00:00
mhbtest  75.8  19    - -         -      - 27644 00:00:51      // 获取
mhbtest   0.0  19    - futex_    -      - 27645 00:00:00
mhbtest   0.0  19    - futex_    -      - 27646 00:00:00
mhbtest   0.0  19    - futex_    -      - 27647 00:00:00
mhbtest   0.0  19    - futex_    -      - 27648 00:00:00
mhbtest   0.0  19    - futex_    -      - 27649 00:00:00
mhbtest   0.0  19    - futex_    -      - 27650 00:00:00
mhbtest   0.0  19    - futex_    -      - 27651 00:00:00
mhbtest   0.0  19    - futex_    -      - 27652 00:00:00
mhbtest   0.1  19    - futex_    -      - 27653 00:00:00
mhbtest   0.1  19    - futex_    -      - 27654 00:00:00
mhbtest   0.0  19    - futex_    -      - 27655 00:00:00
mhbtest   0.0  19    - futex_    -      - 27656 00:00:00
mhbtest   0.0  19    - futex_    -      - 27657 00:00:00

  1. jstack 27643 | grep tid 6bfc -A60 命令获取此线程前60行日志信息,根据日志找到问题所在的地方。
    解释: 6bfc 为线程 27644 的16 进制表示。
jstack 27643 | grep tid 6bfc -A60
"main" #1 prio=5 os_prio=0 tid=0x00007fdd68009000 nid=0x6bfc runnable [0x00007fdd71bac000]
   java.lang.Thread.State: RUNNABLE
        at java.io.FileOutputStream.writeBytes(Native Method)
        at java.io.FileOutputStream.write(FileOutputStream.java:326)
        at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:82)
        at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:140)
        - locked <0x0000000085026a08> (a java.io.BufferedOutputStream)
        at java.io.PrintStream.write(PrintStream.java:482)
        - locked <0x000000008500c080> (a java.io.PrintStream)
        at sun.nio.cs.StreamEncoder.writeBytes(StreamEncoder.java:221)
        at sun.nio.cs.StreamEncoder.implFlushBuffer(StreamEncoder.java:291)
        at sun.nio.cs.StreamEncoder.flushBuffer(StreamEncoder.java:104)
        - locked <0x000000008500c038> (a java.io.OutputStreamWriter)
        at java.io.OutputStreamWriter.flushBuffer(OutputStreamWriter.java:185)
        at java.io.PrintStream.write(PrintStream.java:527)
        - locked <0x000000008500c080> (a java.io.PrintStream)
        at java.io.PrintStream.print(PrintStream.java:597)
        at java.io.PrintStream.println(PrintStream.java:736)
        - locked <0x000000008500c080> (a java.io.PrintStream)
        at JavaDemo.main(JavaDemo.java:5)

"VM Thread" os_prio=0 tid=0x00007fdd68077800 nid=0x6c01 runnable 

"GC task thread#0 (ParallelGC)" os_prio=0 tid=0x00007fdd6801e800 nid=0x6bfd runnable 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值