问题排查记录-linux

  1. ### 以下所有命令都要先sudo su admin  
  2.   
  3. 批量搜索日志  
  4. pgm -A -b -f juhost "grep 'getFloorJuIds' /home/admin/app/logs/app.log|tail -n 1"  
  5.   
  6. 查看gc 执行详细  
  7. /opt/xxx/java/bin/jstat -gcutil `pgrep -u admin java` 5000(每隔多少毫秒打印)  
  8.   
  9. 查看线程数  
  10. ps -eLf | grep java -c  
  11.   
  12.  jvm 堆内存,不得已不要用,会造成线上机器服务暂停几秒  
  13. /java/bin/jmap  -dump:format=b,file=/tmp/heap18.bin `pgrep -u admin java`  
  14.   
  15.  查看jvm 堆瞬时柱状图  
  16. /java/bin/jmap -histo `pgrep -u admin java`|head -n 100  
  17.    
  18.  dump java 线程信息  
  19. /java/bin/jstack `pgrep -u admin java` >> /tmp/thread  
  20.    
  21.  看占用load 高的进程  
  22.  top -H  
  23.    
  24.  所有java线程按cpu 耗用占比排序shell 脚本  
  25.   ```  
  26.  #!/bin/ksh  
  27.   
  28. typeset top=${1:-10}  
  29. typeset pid=${2:-$(pgrep -u $USER java)}  
  30. typeset tmp_file=/tmp/java_$pid_$$.trace  
  31.   
  32. /java/bin/jstack $pid > $tmp_file  
  33. 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;  
  34. do  
  35. typeset nid="0x"$(echo "$line"|awk '{print $1}'|xargs -I{} echo "obase=16;{}"|bc|tr 'A-Z' 'a-z')  
  36. typeset cpu=$(echo "$line"|awk '{print $2}')  
  37. cat $tmp_file|awk '/nid='"$nid"'/,/^$/{print $0"\t"(isF++?"":"cpu="'"$cpu"'"%");}'  
  38. done;  
  39.   
  40.   ```  
  41.   
  42.   
  43. ### 循环执行,自己可以定制  
  44.   ```  
  45.   #when laod1>3, print thread_cpu percent,every 10 seconds  
  46.   
  47. for((i=1;i<=180;i++));do  
  48.   
  49. load1=`uptime | awk '{print $10}' | sed 's/.$//'`  
  50. if [ $(echo "$load1 > 3"|bc) = 1 ]; then  
  51.  echo 'jstat start............... '$i;  
  52. sh th.sh>>/tmp/thread_$i;  
  53. fi  
  54.   
  55. sleep 10;  
  56. done  
  57.   ```

猜你喜欢

转载自yinwufeng.iteye.com/blog/2315731