jvm 收集故障现场脚本

有时候监控系统显示XXX-java应用出现高cup、高io、高内存,该怎样去定位及解决呢,解决思路在《故障诊断》,以下是收集现场证据,便于定位问题

 JAVA_HOME=/usr/java 

 OUTPUT_HOME=~/output 

 DEPLOY_HOME=`dirname$0` 

 HOST_NAME=`hostname` 

  

 DUMP_PIDS=`ps  --no-heading -C java -f --width 1000 | grep"$DEPLOY_HOME" |awk '{print $2}'` 

 if[-z"$DUMP_PIDS"];then 

     echo"The server $HOST_NAME isnot started!" 

     exit1; 

 fi 

  

 DUMP_ROOT=$OUTPUT_HOME/dump 

 if[!-d$DUMP_ROOT];then 

     mkdir$DUMP_ROOT 

 fi 

  

 DUMP_DATE=`date+%Y%m%d%H%M%S` 

 DUMP_DIR=$DUMP_ROOT/dump-$DUMP_DATE 

 if[!-d$DUMP_DIR];then 

     mkdir$DUMP_DIR 

 fi 

  

 echo -e "Dumping the server$HOST_NAME ...\c" 

 for PID in$DUMP_PIDS;do 

     $JAVA_HOME/bin/jstack $PID>$DUMP_DIR/jstack-$PID.dump 2>&1 

     echo -e ".\c" 

     $JAVA_HOME/bin/jinfo $PID>$DUMP_DIR/jinfo-$PID.dump 2>&1 

     echo -e ".\c" 

     $JAVA_HOME/bin/jstat -gcutil $PID>$DUMP_DIR/jstat-gcutil-$PID.dump 2>&1 

     echo -e ".\c" 

     $JAVA_HOME/bin/jstat -gccapacity $PID>$DUMP_DIR/jstat-gccapacity-$PID.dump 2>&1 

     echo -e ".\c" 

     $JAVA_HOME/bin/jmap $PID>$DUMP_DIR/jmap-$PID.dump 2>&1 

     echo -e ".\c" 

     $JAVA_HOME/bin/jmap -heap $PID>$DUMP_DIR/jmap-heap-$PID.dump 2>&1 

     echo -e ".\c" 

     $JAVA_HOME/bin/jmap -histo $PID>$DUMP_DIR/jmap-histo-$PID.dump 2>&1  

     echo -e ".\c" 

     if[-r/usr/sbin/lsof ];then 

     /usr/sbin/lsof -p $PID>$DUMP_DIR/lsof-$PID.dump 

     echo -e ".\c" 

     fi 

 done 

 if[-r/usr/bin/sar ];then 

 /usr/bin/sar >$DUMP_DIR/sar.dump 

 echo -e ".\c" 

 fi 

 if[-r/usr/bin/uptime ];then 

 /usr/bin/uptime >$DUMP_DIR/uptime.dump 

 echo -e ".\c" 

 fi 

 if[-r/usr/bin/free ];then 

 /usr/bin/free -t >$DUMP_DIR/free.dump 

 echo -e ".\c" 

 fi 

 if[-r/usr/bin/vmstat ];then 

 /usr/bin/vmstat >$DUMP_DIR/vmstat.dump 

 echo -e ".\c" 

 fi 

 if[-r/usr/bin/mpstat ];then 

 /usr/bin/mpstat >$DUMP_DIR/mpstat.dump 

 echo -e ".\c" 

 fi 

 if[-r/usr/bin/iostat ];then 

 /usr/bin/iostat >$DUMP_DIR/iostat.dump 

 echo -e ".\c" 

 fi 

 if[-r/bin/netstat ];then 

 /bin/netstat >$DUMP_DIR/netstat.dump 

 echo -e ".\c" 

 fi 

 echo"OK!" 

如果你觉得自己写脚本比较麻烦,也可以安装一个唯品会分享的 https://github.com/DarLiner/vjtools

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值