- ### 以下所有命令都要先sudo su admin
- 批量搜索日志
- pgm -A -b -f juhost "grep 'getFloorJuIds' /home/admin/app/logs/app.log|tail -n 1"
- 查看gc 执行详细
- /opt/xxx/java/bin/jstat -gcutil `pgrep -u admin java` 5000(每隔多少毫秒打印)
- 查看线程数
- ps -eLf | grep java -c
- jvm 堆内存,不得已不要用,会造成线上机器服务暂停几秒
- /java/bin/jmap -dump:format=b,file=/tmp/heap18.bin `pgrep -u admin java`
- 查看jvm 堆瞬时柱状图
- /java/bin/jmap -histo `pgrep -u admin java`|head -n 100
- dump java 线程信息
- /java/bin/jstack `pgrep -u admin java` >> /tmp/thread
- 看占用load 高的进程
- top -H
- 所有java线程按cpu 耗用占比排序shell 脚本
- ```
- #!/bin/ksh
- typeset top=${1:-10}
- typeset pid=${2:-$(pgrep -u $USER java)}
- typeset tmp_file=/tmp/java_$pid_$$.trace
- /java/bin/jstack $pid > $tmp_file
- ps H -eo user,pid,ppid,tid,time,%cpu --sort=-%cpu|head -$top|awk '$2==pid{print $4"\t"$6}' pid=$pid|while read line;
- do
- typeset nid="0x"$(echo "$line"|awk '{print $1}'|xargs -I{} echo "obase=16;{}"|bc|tr 'A-Z' 'a-z')
- typeset cpu=$(echo "$line"|awk '{print $2}')
- cat $tmp_file|awk '/nid='"$nid"'/,/^$/{print $0"\t"(isF++?"":"cpu="'"$cpu"'"%");}'
- done;
- ```
- ### 循环执行,自己可以定制
- ```
- #when laod1>3, print thread_cpu percent,every 10 seconds
- for((i=1;i<=180;i++));do
- load1=`uptime | awk '{print $10}' | sed 's/.$//'`
- if [ $(echo "$load1 > 3"|bc) = 1 ]; then
- echo 'jstat start............... '$i;
- sh th.sh>>/tmp/thread_$i;
- fi
- sleep 10;
- done
- ```