linux下抓取tomcat相關內存、線程、文件句柄等快照,用於故障排除。

如下腳本推薦放在定時任務裏,寫好cron表達式,在不影響業務系統的狀況下dump一些信息分析系統性能瓶頸以及故障排除。apache

由於每次dump的時候jvm會暫停(幾秒到幾十秒不等)。因此在生產系統使用時慎用。所以遭成的任何損失與本博主無關。tomcat

 

crontab -ebash

* 21-8/1 * * * /var/erp/data/dump.sh >> /var/erp/data/dump.log 2>&1 (腳本未經驗證)jvm

dump.sh

#!/bin/bash
PID=`ps -ef|grep 'org.apache.catalina.startup.Bootstrap'|grep tomcat|awk '{print $2}'`
CURRENT=$(date +%Y-%m-%d-%H.%M.%S)
STAT_DIR=/var/erp/jvmstat

jmap -dump:format=b,file=$STAT_DIR/mem-dump-$CURRENT.bin $PID
jstack -l $PID > $STAT_DIR/jstack-$CURRENT.txt
#file handlers
ls /proc/$PID/fd |wc -l > $STAT_DIR/file-handler-$CURRENT.txt
lsof -p $PID >> $STAT_DIR/file-handler-$CURRENT.txt
#thread count
ls /proc/$PID/task |wc -l > $STAT_DIR/threads-$CURRENT.txt
#network
netstat -n | awk '/^tcp/ {++state[$NF]} END {for(key in state) print key,"\t",state[key]}' > $STAT_DIR/network-$CURRENT.txt
netstat -t >> $STAT_DIR/network-$CURRENT.txt
#mem
cat /proc/$PID/status > $STAT_DIR/proc-mem-$CURRENT.txt
相關文章
相關標籤/搜索