排查java程序,资源占用过高

以下shell脚本,通过预先放置在服务器中,出现资源过高时,可直接运行,便于捕捉程序快照。文件捕捉完成后,直接打包成对应压缩包。

#!bin/bash/

 

################ 变量 #############

#项目路径

tomcatTestPath="/home/tomcat/apache-tomcat-7.0.79-http-test"

tomcatPath="/home/tomcat/apache-tomcat-7.0.79-http"

jdkPath="/usr/jdk"

#时间格式

dateFormat="+%Y-%m-%d %H:%M:%S"  

#日志路径

logDir0="/home/jvmLog"

#昨天的日期

nowTime=`date "+%Y-%m-%d_%H:%M:%S"`;

###################################

 

#建文件夹

logDir="$logDir0/$nowTime"

mkdir $logDir;

 

if [ ! -n "$1" ] ;then

  #查询进程号

  pid=`ps -ef | grep tomcat | grep -w $tomcatPath | grep -v 'grep' | grep -v $tomcatTestPath | awk '{print $2}'`

  echo -e http服务的进程号=$pid

else

  pid="$1"

  echo -e "获取传入pid=" $pid

fi

 

cd $jdkPath/bin

 

#输出端口号的服务信息

ps -ef | grep $pid > $logDir/severInfo`date "+%Y-%m-%d %H:%M:%S"`.txt

 

###--------------------------------------------------------

echo -e "---top"

top -n1 > $logDir/topLog`date "+%Y-%m-%d %H:%M:%S"`.txt;

sleep 5;

top -n1 > $logDir/topLog`date "+%Y-%m-%d %H:%M:%S"`.txt;

 

###--------------------------------------------------------

echo -e "---jstack"

./jstack -l $pid >$logDir/jstackLog`date "+%Y-%m-%d %H:%M:%S"`.txt;

sleep 5;

./jstack -l $pid >$logDir/jstackLog`date "+%Y-%m-%d %H:%M:%S"`.txt;

 

###--------------------------------------------------------

echo -e "---jstat"

./jstat -gcutil $pid 1000 15  > $logDir/jstatLog`date "+%Y-%m-%d %H:%M:%S"`.txt;

sleep 5;

./jstat -gcutil $pid 1000 15  > $logDir/jstatLog`date "+%Y-%m-%d %H:%M:%S"`.txt;

 

###--------------------------------------------------------

echo -e "---jmap"

./jmap -dump:live,format=b,file=$logDir/problem`date "+%Y-%m-%d_%H:%M:%S"`.bin $pid

sleep 5;

./jmap -dump:live,format=b,file=$logDir/problem`date "+%Y-%m-%d_%H:%M:%S"`.bin $pid

 

#压缩文件

echo -e "---压缩文件夹"

tar -zcvPf $logDir.tar.gz $logDir

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值