fix[zfoo]: 修复启动脚本第一次启动的时候抓取不到info.log的问题

This commit is contained in:
jaysunxiao
2021-09-30 15:05:38 +08:00
parent fb2fac2e4b
commit 374cef9a7e
3 changed files with 110 additions and 75 deletions
+108 -73
View File
@@ -25,7 +25,7 @@
#
# @author jaysunxiao
# @version 1.0
*/
if [ $# -lt 1 ]; then
echo "deploy.sh脚本使用错误,命令参数不合法"
@@ -54,9 +54,22 @@ function waitAllProcessesExit() {
done
}
function waitInfoLog() {
local infoLog
while true; do
infoLog=$(ls ./log | grep info)
if [ -z "${infoLog}" ]; then
echo "正在等待info.log创建"
sleep 1
else
return
fi
done
}
# 停止所有进程,不包括login
function stop() {
echo "-------------------------------------------------------------------------------------------------------------------------------------->stop"
echo "########################## stop ##########################"
local pids
pids=$(jps | grep ${1} | awk '{print $1}' | paste -d " " -s)
@@ -65,110 +78,49 @@ function stop() {
return
fi
echo "----------------------------------------------------------------------------------------->cpu"
echo "************************** cpu **************************"
uptime
echo "注:"
echo "uptime查看cpu的负载情况,load avarage分别是1分钟,5分钟,15分钟内系统的load值"
echo "一般load值不大于3,我们就认为它的负载是正常的,大于了3就要想办法降低系统的负载"
echo "----------------------------------------------------------------------------------------->内存"
echo "************************** 内存 **************************"
free -m
echo "注:"
echo "free查看内存的使用情况,重点关注swap内存使用,swap大表示物理内存不够用,这时候容易导致OOM异常"
echo "----------------------------------------------------------------------------------------->磁盘"
echo "************************** 磁盘 **************************"
df -h
echo "注:"
echo "df查看磁盘的使用情况,应该特别关注日志和数据库的挂载路径的使用情况"
echo "----------------------------------------------------------------------------------------->网络"
echo "************************** 网络 **************************"
sar -n DEV 1 2
echo "注:"
echo "sar查看网络的使用情况,可以通过网络设备的吞吐量,判断网络设备是否已经饱和。"
echo "----------------------------------------------------------------------------------------->系统日志"
echo "**************************系统日志**************************"
dmesg | tail -n 20
echo "注:"
echo "df查看系统日志的最后20行,主要看有没有严重的系统问题"
echo "----------------------------------------------------------------------------------------->jmap实例数量"
echo "**************************jmap实例**************************"
for pid in ${pids}; do
echo "${pid}->进程的class实例数量前20信息"
jmap -histo ${pid} | head -n 20
echo -e "\n"
done
echo "----------------------------------------------------------------------------------------->开始执行终止Java进程命令"
echo "********************开始执行终止Java进程命令********************"
echo "kill -15 $pids"
kill -15 ${pids}
waitAllProcessesExit ${1}
}
# 启动一个java进程,必须指定jar路径和jar名称
# -n为notEmpty-z为empty
function start() {
echo "-------------------------------------------------------------------------------------------------------------------------------------->start"
local jarPath=${1}
local logPath=${2}
if [ -z "${jarPath}" ]; then
echo "启动的路径不能为空"
echo "usage: sh deploy.sh start jarPath logPath"
exit 1
fi
if [ -z "${logPath}" ]; then
echo "启动的jar包名称不能为空"
echo "usage: sh deploy.sh start jarPath logPath"
exit 1
fi
mkdir -p "${logPath}/log"
cd ${logPath}
# -XX:+AlwaysPreTouch,并置零内存页面,可能令得启动时慢上一点,但后面访问时会更流畅,比如页面会连续分配
# 输出到文件 >> output.log 2>&1 &
nohup java -XX:+UseG1GC -XX:InitialHeapSize=4g -XX:MaxHeapSize=4g -XX:MaxMetaspaceSize=256m -XX:AutoBoxCacheMax=20000 -XX:+UseStringDeduplication -XX:+HeapDumpOnOutOfMemoryError -Djdk.attach.allowAttachSelf=true -Dspring.profiles.active=pro -Dfile.encoding=UTF-8 -jar ${jarPath} >/dev/null 2>&1 &
# 如果没有info的log,则等待一秒钟
local infoLog
infoLog=$(ls ./log | grep info)
if [ -z "${infoLog}" ]; then
sleep 1
fi
if [ -z "${3}" ]; then
tailf log/info.log
else
sleep 4
local jarName=${jarPath##*/}
local runningProcesses
runningProcesses=$(jps -lvm | grep ${jarName})
echo "----------------------------------------------------------------------------------------->jps信息"
echo "${runningProcesses}"
sleep 4
echo "----------------------------------------------------------------------------------------->jstat编译统计信息"
local pids
pids=$(jps | grep ${jarName} | awk '{print $1}' | paste -d " " -s)
for pid in ${pids}; do
echo "${pid}->进程的编译统计信息"
jstat -compiler ${pid}
echo -e "\n"
done
sleep 6
echo "----------------------------------------------------------------------------------------->启动信息"
tail -n 40 log/info.log
exit 0
fi
}
# 更新jar包
function update() {
echo "-------------------------------------------------------------------------------------------------------------------------------------->update"
echo "######################### Ⅱ update ########################"
local jarPath=${1}
if [ -z "${jarPath}" ]; then
@@ -205,8 +157,65 @@ function update() {
echo "${fileInfo}"
}
# 启动一个java进程,必须指定jar路径和jar名称
# -n为notEmpty-z为empty
function start() {
echo "######################### Ⅲ start #########################"
local jarPath=${1}
local logPath=${2}
if [ -z "${jarPath}" ]; then
echo "启动的路径不能为空"
echo "usage: sh deploy.sh start jarPath logPath"
exit 1
fi
if [ -z "${logPath}" ]; then
echo "启动的jar包名称不能为空"
echo "usage: sh deploy.sh start jarPath logPath"
exit 1
fi
mkdir -p "${logPath}/log"
cd ${logPath}
# -XX:+AlwaysPreTouch,并置零内存页面,可能令得启动时慢上一点,但后面访问时会更流畅,比如页面会连续分配
# 输出到文件 >> output.log 2>&1 &
nohup java -XX:+UseG1GC -XX:InitialHeapSize=4g -XX:MaxHeapSize=4g -XX:MaxMetaspaceSize=256m -XX:AutoBoxCacheMax=20000 -XX:+UseStringDeduplication -XX:+HeapDumpOnOutOfMemoryError -Djdk.attach.allowAttachSelf=true -Dspring.profiles.active=pro -Dfile.encoding=UTF-8 -jar ${jarPath} >/dev/null 2>&1 &
# 如果没有info的log,则一直等待
waitInfoLog
if [ -z "${3}" ]; then
tailf log/info.log
else
sleep 4
local jarName=${jarPath##*/}
local runningProcesses
runningProcesses=$(jps -lvm | grep ${jarName})
echo "**************************jps信息**************************"
echo "${runningProcesses}"
sleep 4
echo "************************jstat编译统计信息************************"
local pids
pids=$(jps | grep ${jarName} | awk '{print $1}' | paste -d " " -s)
for pid in ${pids}; do
echo "${pid}->进程的编译统计信息"
jstat -compiler ${pid}
echo -e "\n"
done
sleep 6
echo "**************************启动日志**************************"
tail -n 40 log/info.log
exit 0
fi
}
function stopUpdateStart() {
echo "-------------------------------------------------------------------------------------------------------------------------------------->stopUpdateStart"
local jarPath=${1}
local logPath=${2}
@@ -229,15 +238,41 @@ function stopUpdateStart() {
# 先停止
stop ${jarName}
echo
echo
echo
# 再更新
update ${jarPath}
echo
echo
echo
# 最后启动
start ${jarPath} ${logPath} ${3}
}
# Linux性能调优
function optimizeLinux() {
echo "-------------------------------------------------------------------------------------------------------------------------------------->性能调优"
echo "--------------------------------------------------------------------------------------------------------------------------------------------------------------------------"
echo "--------------------------------------------------------------------------------------------------------------------------------------------------------------------------"
echo "--------------------------------------------------------------------------------------------------------------------------------------------------------------------------"
echo "--------------------------------------------------------------------------------------------------------------------------------------------------------------------------"
echo "--------------------------------------------------------------------------------------------------------------------------------------------------------------------------"
echo "--------------------------------------------------------------------------------------------------------------------------------------------------------------------------"
echo "--------------------------------------------------------------------------------------------------------------------------------------------------------------------------"
echo "--------------------------------------------------------------------------------------------------------------------------------------------------------------------------"
echo "--------------------------------------------------------------------------------------------------------------------------------------------------------------------------"
echo "--------------------------------------------------------------------------------------------------------------------------------------------------------------------------"
echo "--------------------------------------------------------------------------------------------------------------------------------------------------------------------------"
echo "--------------------------------------------------------------------------------------------------------------------------------------------------------------------------"
echo "--------------------------------------------------------------------------------------------------------------------------------------------------------------------------"
echo "--------------------------------------------------------------------------------------------------------------------------------------------------------------------------"
echo "--------------------------------------------------------------------------------------------------------------------------------------------------------------------------"
echo "--------------------------------------------------------------------------------------------------------------------------------------------------------------------------"
echo "--------------------------------------------------------------------------------------------------------------------------------------------------------------------------"
echo "--------------------------------------------------------------------------------------------------------------------------------------------------------------------------"
echo "--------------------------------------------------------------------------------------------------------------------------------------------------------------------------"
echo "--------------------------------------------------------------------------------------------------------------------------------------------------------------------------"
echo "性能调优预留方法"
}
# 立即执行调优
optimizeLinux
@@ -16,7 +16,7 @@ package com.zfoo.event.model.anno;
import java.lang.annotation.*;
/**
* 接受时间注解
* 接收事件的注解
*
* @author jaysunxiao
* @version 3.0
+1 -1
View File
@@ -50,7 +50,7 @@
<storage:scan package="com.zfoo.**.resource"/>
<!-- 如果是类路径一classpath开头,如果是其它目录则以file开头-->
<storage:resource location="classpath:/excel" suffix="xlsx"/>
<!-- <storage:resource location="file:C:\Users\jaysunxiao\Desktop\excel" suffix="xls"/>-->
<!-- <storage:resource location="file:C:\Users\jaysunxiao\Desktop\excel" suffix="xlsx"/>-->
</storage:storage>
</beans>