diff --git a/deploy.sh b/deploy.sh index ed116433..67f2e611 100644 --- a/deploy.sh +++ b/deploy.sh @@ -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 diff --git a/event/src/main/java/com/zfoo/event/model/anno/EventReceiver.java b/event/src/main/java/com/zfoo/event/model/anno/EventReceiver.java index 360a79ee..35ba9a6e 100644 --- a/event/src/main/java/com/zfoo/event/model/anno/EventReceiver.java +++ b/event/src/main/java/com/zfoo/event/model/anno/EventReceiver.java @@ -16,7 +16,7 @@ package com.zfoo.event.model.anno; import java.lang.annotation.*; /** - * 接受时间注解 + * 接收事件的注解 * * @author jaysunxiao * @version 3.0 diff --git a/storage/src/test/resources/application.xml b/storage/src/test/resources/application.xml index 41db523d..b939ea6b 100644 --- a/storage/src/test/resources/application.xml +++ b/storage/src/test/resources/application.xml @@ -50,7 +50,7 @@ - + \ No newline at end of file