[Tomcat] OutOfMemory시 톰캣 자동 재시작
운영중인 톰캣이 OutOfMemory를 뱉어내고 작동을 안하는 경우가 있다.
관제 시스템이 잘 갖춰진 운영 환경이라면, 담당자에게 바로 알림이 가고 특정 시간내에 처리가 가능하겠지만,
그렇지 않은경우에는 의도치 않게 장애가 길어지게 된다.
OutOfMemory가 발생된 후 톰캣이 실행중인데 작동 불능에 빠졌을경우 누군가 조치를 취해주지 않거나 톰캣 상태를 모니터링해주는 자동화된 도구가 없다면 어떻게 해야할까?
이럴때는 JVM 옵션을 이용하여 후속 조치가 가능하다.
OnOutOfMemoryError 옵션을 이용할 경우 OutOfMemroy 발생 이후에 특정 동작을 지정할 수 있다.
톰캣 catalina.sh 파일의 CATALINA_OPTS 옵션에 "-XX:+HeapDumpOnOutOfMemoryError -XX:OnOutOfMemoryError"을 이용하면 된다.
예1 : OOM 발생시 톰캣을 재시작하는 쉘 스크립트를 실행
CATALINA_OPTS="-Djava.awt.headless=true -server -Xms256m -Xmx1024m -XX:MaxPermSize=128m -XX:+HeapDumpOnOutOfMemoryError -XX:OnOutOfMemoryError=/home/test/tomcatRestart.sh"
예2 : OOM 발생시 해당 톰캣을 강제로 중지.
CATALINA_OPTS="-Djava.awt.headless=true -server -Xms256m -Xmx1024m -XX:MaxPermSize=128m -XX:+HeapDumpOnOutOfMemoryError -XX:OnOutOfMemoryError=kill -9 %p"
* 톰캣 재시작 스크립트(tomcatRestart.sh)
------------------------------------------------------------------------------------------------------------------------------
#!/bin/sh
export JAVA_HOME=/usr/
local
/java
export PATH=
"$PATH:$JAVA_HOME/bin"
export CATALINA_HOME=/usr/
local
/tomcat7
# 톰캣 재시작
/usr/
local
/tomcat7/bin/shutdown.sh
sleep 10
/usr/
local
/tomcat7/bin/startup.sh
------------------------------------------------------------------------------------------------------------------------------
shutdown.sh를 실행시킬때에는 간혹가다 톰캣이 중지가 안되는경우가 있으므로 shutdown.sh에 force 옵션등을 추가하여 강제로 중지 시킬수 있도록 처리 하는게 좋다.
출처: http://fruitdev.tistory.com/204?category=558549 [과일가게 개발자]
'Server, WAS > Tomcat' 카테고리의 다른 글
tomcat server.xml 의 connector 설정 값. (0) | 2018.10.05 |
---|---|
Linux Apache2, Tomcat 연동 및 로드밸런싱 설정 (0) | 2018.09.03 |
Linux Tomcat 다중으로 설치하기 (0) | 2018.09.03 |
리눅스 서버 부팅시 Tomcat 자동 실행 (0) | 2018.09.03 |
[Tomcat] 톰캣 실행여부 확인 및 시작 Shell Script (0) | 2018.09.03 |
Tomcat 에서 특정 IP 접근 제한하기 (0) | 2018.09.03 |
Tomcat 로컬환경에서 세션이 끊길때(JSessionID 충돌) (0) | 2018.09.03 |
Tomcat 강제종료 (0) | 2018.09.03 |