Middleware (Tomcat) tomcat 9 스크립트 공유 (setenv.sh / kill.sh / memory_dump.sh / t…
페이지 정보
작성자 미들웨어 아이디로 검색 전체게시물 댓글 1건 조회 4,455회 좋아요 0회 작성일 21-11-08 13:59본문
안녕하세요. 미들웨어 입니다.
이번엔 Tomcat 9 version 에서 자주 사용하는 스크립트 파일을 공유해드리겠습니다.
아래 내용에서 경로만 수정해서 사용하시면 여러모로 편리하게 사용할 수 있습니다.
1. setenv.sh
tomcat 에서 사용하는 JAVA_OPT 옵션 설정을 한곳에서 하는 내용 입니다.
각 경로만 설정 잘하시고 사용하시면 됩니다.
#!/bin/sh # setenv.sh export MODULE_CODE="클럭스" export MODULE_NAME="tomcat9-test1" export MODULE_ENV="prd" export MODULE_IDX="11" export JAVA_HOME="/usr/local/jdk1.8" export CATALINA_HOME="/home/tomcat/tomcat9" export CATALINA_BASE="/home/tomcat/tomcat9-test1" export SERVER_PORT=8005 export AJP_PORT=80099 export HTTP_PORT=8080 export REDIRECT_PORT=8003 export JVM_ROUTE="ibe${MODULE_NAME}${MODULE_IDX}" export USER="tomcat" export SERVER_NAME="${MODULE_CODE}${MODULE_NAME}${MODULE_ENV}${MODULE_IDX}" MAX_THREADS=400 ACCEPT_COUNT=200 # ---------------------------------------------------------- # tomcat opts # ---------------------------------------------------------- JAVA_OPTS="-Dtomcat.server.port=${SERVER_PORT}" JAVA_OPTS="${JAVA_OPTS} -Dtomcat.ajp.port=${AJP_PORT}" JAVA_OPTS="${JAVA_OPTS} -Dtomcat.http.port=${HTTP_PORT}" JAVA_OPTS="${JAVA_OPTS} -Dtomcat.redirect.port=${REDIRECT_PORT}" JAVA_OPTS="${JAVA_OPTS} -Dtomcat.jvm.route=${JVM_ROUTE}" export JAVA_OPTS CATALINA_OPTS="-server" # ---------------------------------------------------------- # performanc opts # ---------------------------------------------------------- CATALINA_OPTS="${CATALINA_OPTS} -Dtomcat.max.threads=${MAX_THREADS}" CATALINA_OPTS="${CATALINA_OPTS} -Dtomcat.accept.count=${ACCEPT_COUNT}" # ---------------------------------------------------------- # component opts # ---------------------------------------------------------- CATALINA_OPTS="${CATALINA_OPTS} -Dserver.name=${SERVER_NAME}" CATALINA_OPTS="${CATALINA_OPTS} -Dserver_name=${SERVER_NAME}" CATALINA_OPTS="${CATALINA_OPTS} -Dmodule.code=${MODULE_CODE}" CATALINA_OPTS="${CATALINA_OPTS} -Dmodule.docbase=/app/tomcat/" CATALINA_OPTS="${CATALINA_OPTS} -Dlog.dir=${LOG_DIR}" CATALINA_OPTS="${CATALINA_OPTS} -Dspring.profiles.active=default" # ---------------------------------------------------------- # jvm memory opts # ---------------------------------------------------------- CATALINA_OPTS="${CATALINA_OPTS} -Xms2048m -Xmx2048m" CATALINA_OPTS="${CATALINA_OPTS} -XX:MaxNewSize=512m -XX:MaxPermSize=512m" # ---------------------------------------------------------- # jmx opts # ---------------------------------------------------------- #CATALINA_OPTS="${CATALINA_OPTS} -Dcom.sun.management.jmxremote" #CATALINA_OPTS="${CATALINA_OPTS} -Dcom.sun.management.jmxremote.port=12516" #CATALINA_OPTS="${CATALINA_OPTS} -Dcom.sun.management.jmxremote.ssl=false" #CATALINA_OPTS="${CATALINA_OPTS} -Dcom.sun.management.jmxremote.authenticate=false" #-------------------------------------- # java gc opts #-------------------------------------- CATALINA_OPTS="${CATALINA_OPTS} -XX:+DoEscapeAnalysis" CATALINA_OPTS="${CATALINA_OPTS} -XX:+UseCompressedOops" CATALINA_OPTS="${CATALINA_OPTS} -XX:+UseParallelGC" CATALINA_OPTS="${CATALINA_OPTS} -XX:+UseParallelOldGC" # CATALINA_OPTS="${CATALINA_OPTS} -verbose:jni" # CATALINA_OPTS="${CATALINA_OPTS} -verbose:class" CATALINA_OPTS="${CATALINA_OPTS} -verbose:gc" CATALINA_OPTS="${CATALINA_OPTS} -Xloggc:${LOG_DIR}/gc.log.`date +%Y%m%d%H%M%S`" CATALINA_OPTS="${CATALINA_OPTS} -XX:+PrintGCDetails" CATALINA_OPTS="${CATALINA_OPTS} -XX:+PrintGCTimeStamps" CATALINA_OPTS="${CATALINA_OPTS} -XX:+PrintHeapAtGC" CATALINA_OPTS="${CATALINA_OPTS} -XX:+HeapDumpOnOutOfMemoryError" CATALINA_OPTS="${CATALINA_OPTS} -XX:HeapDumpPath=${CATALINA_BASE}" CATALINA_OPTS="${CATALINA_OPTS} -Djava.net.preferIPv4Stack=true" CATALINA_OPTS="${CATALINA_OPTS} -Dsun.rmi.dgc.client.gcInterval=3600000" CATALINA_OPTS="${CATALINA_OPTS} -Dsun.rmi.dgc.server.gcInterval=3600000" CATALINA_OPTS="${CATALINA_OPTS} -Dsun.lang.ClassLoader.allowArraySyntax=true" CATALINA_OPTS="${CATALINA_OPTS} -Djava.awt.headless=true" #-------------------------------------- # scouter opts #-------------------------------------- SCOUTER_AGENT_DIR="/app/scouter/agent.java-2.1" CATALINA_OPTS=" ${CATALINA_OPTS} -javaagent:${SCOUTER_AGENT_DIR}/scouter.agent.jar" CATALINA_OPTS=" ${CATALINA_OPTS} -Dscouter.config=${CATALINA_BASE}/conf/scouter.conf" export CATALINA_OPTS echo "========================================================================" echo "JAVA_HOME=${JAVA_HOME}" echo "CATALINA_HOME=${CATALINA_HOME}" echo "CATALINA_BASE=${CATALINA_BASE}" echo "JAVA_OPTS=${JAVA_OPTS}" echo "CATALINA_OPTS=${CATALINA_OPTS}" echo "========================================================================" |
2. kill.sh
tomcat 프로세스를 kill 하는 명령어 입니다.
바로 죽일수 있어서 유용? 합니다
#!/bin/sh # kill.sh . ./setenv.sh ps -ef | grep java | grep "server.name=${SERVER_NAME} " | awk {'print "kill -9 " $2'} | sh -x |
3. MemoryDump.sh
메모리덤프 명령어 입니다.
#!/bin/sh # mdump.sh - heap memory dump . ./env.sh ps -ef | grep java | grep "server.name=${SERVER_NAME} " | awk {'print "${JAVA_HOME}/bin/jmap -dump:format=b,file=${TOPAS_SERVER_NAME}-$(date +"%Y%m%d%H%M%S" ).hprof "$2'} | sh -x |
4. shutdown.sh
tomcat 인스턴스를 shutdown 하는 명령어 입니다.
#!/bin/sh # stopNode.sh . ./setenv.sh ${CATALINA_HOME}/bin/shutdown.sh |
5. startup.sh
tomcat 인스턴스를 기동하는 명렁어 입니다.
#!/bin/sh # startNode.sh . ./setenv.sh # # check user for can't run as root # UNM=`id -u -n` if [ "x${UNM}" != "x${USER}" ]; then echo "You can't start ${SERVER_NAME} server..." exit; fi # # check previous process was alive # PID=`ps -ef | grep java | grep "server.name=${SERVER_NAME}" | awk '{print $2}'` echo "#" echo "# tomcat7-${SERVER_NAME} process id : $PID" echo "#" if [ "x$PID" != "x" ]; then echo "Tomcat 7 ${SERVER_NAME} is already Running..." exit; fi # ${CATALINA_HOME}/bin/catalina.sh run ${CATALINA_HOME}/bin/startup.sh |
6. ThreadDump.sh
Tomcat 에서 가장 중요한 Thread 를 dump 뜨는 명령어 입니다.
#!/bin/bash # tdump.sh - thread dump . ./setenv.sh count=3 delay=10 while [ $count -gt 0 ]; do ps -ef | grep java | grep "server.name=${SERVER_NAME} " | awk {'print "${JAVA_HOME}/bin/jstack "$2'} | sh -x >> ${TOPAS_SERVER_NAME}-$(date +"%Y%m%d%H%M%S" ).tdump sleep $delay let count-- echo -n "." done |
7. tail.sh
로그 파일을 실시간 tail 설정해둬서 보기 편하게 하는 명령어 입니다
#!/bin/sh # tail.sh . ./setenv.sh tail -f ${CATALINA_BASE}/logs/catalina.out |
이상 이번 스크립트 가이드를 마치겠습니다.
열공하세요~