某项目现场,时常出现CPU高的时侯,这些情况发觉了多次,一般是代码存在一些问题,引起CPU高linux下安装tomcat,常常人工去恢复,有时又未做线程快照linux 电子书,难以定位到具体的问题。于是想写一个小脚本,手动去获取马哥linux,下边是本次的一点尝试。
Tomcat的简介
Tomcat服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器,在中大型系统和并发访问用户不是好多的场合下被普遍使用,是开发和调试JSP程序的首选。
Xx通讯企业使用较普遍的版本为Tomcat8的大版本。因为开源软件的漏洞比较多,建议厂商在安装Tomcat服务器时,建议安装所需大版本最新小版本。
各个版本的Tomcat在Linux,window操作系统的安装过程大致相像。
下边以在linux的Tomcat8.5.72为例,详尽描述Tomcat的安装过程。该安装文档适用于各个版本的Tomcat安装。
最小化安装要求
安装要求:安装tomcat遵守最小化安装原则,安装最小化组件,开启最小化端口linux下安装tomcat,关掉非必须服务。
JDK环境安装
TOMCAT环境安装
1.Tomcat安装及启动
Tar –xvf *tar.gz
sh /app/tomcat/apache-tomcat-8.5.72/bin/startup.sh
2.Tomcat访问
:8080/
手动化线程快照
1.实现逻辑
当主机CPU小于80%时,因为一个主机存大多个JAVA进程,按进程CPU大小,小于某个阀值时调用jstack程序生成快照,同时上传至FTP,使用MT工具剖析DUMP
2.实现脚本
#!/bin/bash
source /etc/profile
log_file="/tmp/dump.log"
script_name="thread_dump.sh"
datee=$(date +"%Y-%m-%d-%H:%M:%S")
#######DECALRE
pro_cpu_rate=10.0
ipaddr=$(ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:"|grep "^1XXXX"|head -n 1)
###########################
ps axf -o "pid %cpu command"|grep java|grep -v grep > /tmp/thread_${ipaddr}_${datee}_ddl
#################################
which jstack
if [ $? -eq 0 ] ;then
function pro_cpu
{
ps axf -o "pid %cpu command"|grep java|grep -v grep|awk '{if($2>=$pro_cpu_rate) print $1}' | while read procid
do
echo $procid
done
}
function log_echo
{
typeset log_message=$1
typeset log_date=$(date +"%Y-%m-%d %H:%M:%S")
echo "[${log_date}] [${script_name}] ${log_message}" >> $log_file
}
log_echo "start jstack thread"
for i in `pro_cpu`
do
log_echo "process num $i start"
jstack $i > /tmp/thread_${ipaddr}_${datee}_$i
log_echo "process num $i end"
sleep 5
done
function file_upload
{
ftp -n <<EOF
open XXXX
user XXXX
binary
lcd /tmp
cd thread_snapshot
prompt
mput thread*
close
bye
EOF
}
function file_delete
{
cd /tmp && rm -rf thread*
}
file_upload
file_delete
cat $log_file
else
echo 0
exit;
fi