jstack命令概述

目錄

0.查看系統位數

1.查看java進程ID

2.查看進程中的線程ID

3.將線程ID轉換成16進制

4.jstack生成當前時刻線程快照


0.查看系統位數

Linux:getconf LONG_BIT

HP-UX:getconf KERNEL_BITS

1.查看java進程ID

使用jps、ps -ef | grep java查看當前java進程的pid,嚴重情況下可以使用top命令查看當前系統cpu/內存使用率最高的進程pid。

2.查看進程中的線程ID

使用命令查看進程裏面佔用最多的資源的線程:

Linux:top -Hp ${pid}、pstree -p ${pid}

HP-UX:tusc

3.將線程ID轉換成16進制

使用命令把線程tid轉換成16進制數。

printf "%x\n" ${tid}

4.jstack生成當前時刻線程快照

(threaddump,即當前進程中所有線程的信息)

使用命令查詢該線程阻塞的地方:

【32位機器】jstack -l ${pid} >>jstack.log

【64位機器】jstack -J-d64 -l ${pid} >>jstack.log

jstack更多詳細用法可以查看官方說明:

http://docs.oracle.com/javase/7/docs/technotes/tools/share/jstack.html

 

HP-UX進程佔用CPU過高分析

1、用pstack -p ${pid} 查看進程的堆棧信息。
2、用glance查看這個線程的cpu,先按s鍵,輸入進程id,在按G鍵可以查看每個線程佔用CPU

 

系統中進程查看:

Linux系統中可以使用strace / ltrace工具,在HPUX中可以使用tusc / kiinfo工具。

 

Java 線程數多少是受 max user processes 控制,max user processes 是配置在/etc/security/limits.conf

或者執行命令ulimit -a查看

 

檢查 使用 ps -fe |grep programname 查看獲得進程的pid,再使用 ps -Lf pid 查看對應進程下的線程數.

查看最大線程數:cat /proc/sys/kernel/threads-max

ps -eLf |grep pid|grep -v grep

 

使用HP-UX的 lsof  -i |grep ${pid}可以查到程序名,進程號

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章