공유할 서비스 선택

TECH


TECH

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

페이지 정보

작성자 미들웨어 아이디로 검색 전체게시물 댓글 1건 조회 5,023회 좋아요 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 목록
번호 제목 작성자 작성일 조회수
245 OS OSworker 아이디로 검색 전체게시물 03-29 63
이슈 : sbd watchdog type stonith 사용시 메모리 누수 발생 #RHEL8.10 #RHEL9.4

카테고리 : OS

63 0
작성자 : OSworker 25/03/29
244 OS OSworker 아이디로 검색 전체게시물 03-23 117
Linux 명령어 : du vs df 차이점에 대해 알아보겠습니다.

카테고리 : OS

117 0
작성자 : OSworker 25/03/23
243 OS OSworker 아이디로 검색 전체게시물 03-15 140
아직도 헷갈려 하시는 RHEL Life-cycle에 대해 좀 더 설명드리고자 합니다. RHEL5하고 RHEL6 "ongoing"

카테고리 : OS

140 0
작성자 : OSworker 25/03/15
242 OS OSworker 아이디로 검색 전체게시물 02-28 218
3월 11일에 RedHat 코리아에서 개최하는 행사가 있습니다. 어서 등록하세요~!!

카테고리 : OS

218 0
작성자 : OSworker 25/02/28
241 OS OSworker 아이디로 검색 전체게시물 02-23 231
Extended Life Cycle Support Extension 6 RHEL6 버전의 패키지가 아직도 나온다구요?

카테고리 : OS

231 0
작성자 : OSworker 25/02/23
240 OS OSworker 아이디로 검색 전체게시물 02-17 337
Red Hat Enterprise Linux 10 Beta -> 지금 이용 가능

카테고리 : OS

337 0
작성자 : OSworker 25/02/17
239 OS OSworker 아이디로 검색 전체게시물 01-28 411
2025년 엔터프라이즈 리눅스를 시작해야 하는 10가지 이유

카테고리 : OS

411 0
작성자 : OSworker 25/01/28
238 OS OSworker 아이디로 검색 전체게시물 01-19 622
RHEL9 에서 bonding 명령어로 설정, nmtui 사용하여 설정, 스크립트로 설정하는 법

카테고리 : OS

622 0
작성자 : OSworker 25/01/19
237 OS OSworker 아이디로 검색 전체게시물 01-12 633
RHEL9 에서 달라진 Network 설정을 알아보겠습니다.

카테고리 : OS

633 0
작성자 : OSworker 25/01/12
236 OS OSworker 아이디로 검색 전체게시물 12-29 676
여러분 리눅스 무료 배포판 NAVIX를 들어보셨나요? Naver + linux ??

카테고리 : OS

676 0
작성자 : OSworker 24/12/29
Total 245건
게시물 검색

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