抓取占用CPU高的JAVA线程,进而找出有问题的WEB页面

写在前面:当一个台 WEB 主机(JAVA 平台)上有多个站点时,很可能因为一个站点项目出现死锁之类的 BUG 而导致所有站点挂掉!最烦的就是因为站点过多,在日志无法具体指向的时候,你根本无法确定那个站点出现 BUG,从而你也没法推给开发人员解决。                    下面,就介绍一个抓取高占用 CPU 的线程的简单方法:

  1. 运行 top 命令取得 JAVA 线程号(PID),假如是 2068;
  2. 运行 jstack + pid 命令导出 JAVA 线程信息到 result 文件,命令行为
  3. jstack 2068>result
  4. 运行 top -p 2068 -H 查看 CPU 占用排名情况,并记录 PID;
  5. 运行 ./jtgrep +PID 找到线程头文字(PID 为第 3 步获取) ;
  6. 使用 vi/vim 打开 result,查询头文字就能找到相应线程。

下面为 jtgrep 代码:

#bin/bash   
nid =`python -c "print hex($1)"` grep -i $nid $2

 

写在后面:此方法无须安装任何软件,能够快速找出占用 CPU 的 JAVA 线程,是发现同类问题的首选办法,但很多时候你可能找到的是 VM threads 线程或者 GC 线程。。。无法真正找到毒瘤,那就只能另寻他法了。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇