공유할 서비스 선택

TECH


TECH

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
 

 

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

열공하세요~

 

 

댓글목록

TECH 목록
번호 제목 작성자 작성일 조회수
232 OS OSworker 아이디로 검색 전체게시물 11-17 55
RHEL 9.5 가 11월 12일에 릴리즈 되었습니다. 간략하게 살펴보시죠~

카테고리 : OS

55 0
작성자 : OSworker 24/11/17
231 OS OSworker 아이디로 검색 전체게시물 11-10 85
어떤 프로세스 어떤 이유로 인해 성능에 문제가 생겼을때 perf로 그 문제를 찾아보세요.

카테고리 : OS

85 0
작성자 : OSworker 24/11/10
230 OS OSworker 아이디로 검색 전체게시물 10-31 138
AI에 대한 관심이 많습니다. 혹시 RHEL AI에 대해 들어보셨나요?

카테고리 : OS

138 0
작성자 : OSworker 24/10/31
229 OS OSworker 아이디로 검색 전체게시물 10-24 167
Fedora와 Red Hat Enterprise Linux의 차이점

카테고리 : OS

167 0
작성자 : OSworker 24/10/24
228 OS OSworker 아이디로 검색 전체게시물 10-11 208
audit 로그에 저장된 time 을 날짜/시간 으로 변경하여 보는법

카테고리 : OS

208 0
작성자 : OSworker 24/10/11
227 OS OSworker 아이디로 검색 전체게시물 09-29 351
[보안취약점]"RHSB-2024-002 - OpenPrinting cups-filters"에 대해 설명드리고자합니다.

카테고리 : OS

351 0
작성자 : OSworker 24/09/29
226 OS OSworker 아이디로 검색 전체게시물 09-25 422
누가 설정파일을 수정했는지 알고싶어요? 그럼 audit를 사용해보세요~!

카테고리 : OS

422 0
작성자 : OSworker 24/09/25
225 OS OSworker 아이디로 검색 전체게시물 09-15 325
RHEL6.10 앞으로 어떻게 되나요? 아직도 RHEL6버전을 사용하신다구요?

카테고리 : OS

325 0
작성자 : OSworker 24/09/15
224 OS OSworker 아이디로 검색 전체게시물 08-30 428
SWAP이 왜 자꾸 사용하게 될까요? 누가 사용하는것일까요?

카테고리 : OS

428 0
작성자 : OSworker 24/08/30
223 OS OSworker 아이디로 검색 전체게시물 08-22 428
리눅스 서버에 RDP를 설치하여 윈도우에서 "원격데스크탑접속"으로 연결

카테고리 : OS

428 0
작성자 : OSworker 24/08/22
Total 232건
게시물 검색

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