공유할 서비스 선택

TECH


TECH

Middleware (Tomcat) tomcat 9 스크립트 공유 (setenv.sh / kill.sh / memory_dump.sh / t…

페이지 정보

작성자 미들웨어 아이디로 검색 전체게시물 댓글 0건 조회 2,873회 좋아요 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
 

 

이상 이번 스크립트 가이드를 마치겠습니다. 

열공하세요~

 

 

댓글목록

등록된 댓글이 없습니다.

TECH 목록
번호 제목 작성자 작성일 조회수
148 Middleware 미들웨어 아이디로 검색 전체게시물 04-24 741
(오픈소스 활용-18) VSCODE 설치 및 GIT 활용 연동 가이드

카테고리 : Middleware

741 0
작성자 : 미들웨어 23/04/24
147 Middleware 미들웨어 아이디로 검색 전체게시물 04-05 1045
(오픈소스 활용-17) 로컬 및 URL 호출 테스트 옵션 (curl, ab 옵션으로 부하주기)

카테고리 : Middleware

1,045 0
작성자 : 미들웨어 23/04/05
146 Middleware 미들웨어 아이디로 검색 전체게시물 03-20 572
(오픈소스 활용-16) Jstack을 활용하여 CPU급등한 프로세스 파일로 떨구기

카테고리 : Middleware

572 0
작성자 : 미들웨어 23/03/20
145 OS leechanho 아이디로 검색 전체게시물 03-15 1939
[쉘스크립트] 리눅스 시스템 정보수집 스크립트

카테고리 : OS

1,939 1
작성자 : leechanho 23/03/15
144 Middleware 미들웨어 아이디로 검색 전체게시물 03-08 1015
(Monitoring) Jennifer & Slack 연동 구성방법 (이벤트 발생 확인)

카테고리 : Middleware

1,015 0
작성자 : 미들웨어 23/03/08
143 Middleware 미들웨어 아이디로 검색 전체게시물 02-20 940
Coherence란 무엇인가?

카테고리 : Middleware

940 0
작성자 : 미들웨어 23/02/20
142 Middleware 미들웨어 아이디로 검색 전체게시물 02-08 1478
TP-monitor 란 무엇인가?

카테고리 : Middleware

1,478 0
작성자 : 미들웨어 23/02/08
141 Middleware 미들웨어 아이디로 검색 전체게시물 01-25 473
(weblogic 활용) Weblogic을 마켓에서 구매후 클릭으로 설치 -2

카테고리 : Middleware

473 0
작성자 : 미들웨어 23/01/25
140 Middleware 미들웨어 아이디로 검색 전체게시물 01-12 580
(weblogic 활용) Weblogic을 마켓에서 구매후 클릭으로 설치 -1

카테고리 : Middleware

580 0
작성자 : 미들웨어 23/01/12
139 Middleware 미들웨어 아이디로 검색 전체게시물 12-21 934
(오픈소스 활용-15) DB연동 테스트 샘플jsp (DBtest.jsp)

카테고리 : Middleware

934 0
작성자 : 미들웨어 22/12/21
Total 198건
게시물 검색

주식회사 클럭스| 대표 : 이찬호| 사업자등록번호 : 107-87-27655
주소 : 서울특별시 영등포구 국회대로 800, 여의도파라곤
E-mail : sales@chlux.co.kr
Copyright © 클럭스 www.chlux.co.kr All rights reserved.
상단으로Top