目錄
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}可以查到程序名,進程號