Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 공부
- CKA 기출문제
- Pinpoint
- kotlin
- kotlin spring
- MySQL
- aws
- AI
- Spring
- kotlin coroutine
- 코틀린 코루틴의 정석
- 오블완
- 정보처리기사 실기
- Java
- IntelliJ
- 정보처리기사실기 기출문제
- CloudWatch
- PETERICA
- Kubernetes
- kotlin querydsl
- Linux
- 기록으로 실력을 쌓자
- AWS EKS
- Elasticsearch
- APM
- 티스토리챌린지
- minikube
- CKA
- 정보처리기사 실기 기출문제
- mysql 튜닝
Archives
- Today
- Total
피터의 개발이야기
[JAVA] Tomcat OutOfMemory시 톰캣 자동 재시작 본문
반응형
서비스 운영 중에 톰켓이 OutOfMemory를 뱉어내며 작동을 하지 않을 때가 있다.
APM 시스템이 잘 갖춰진 곳이라면,
시스템의 문제가 발생 시에 바로 알림이 운영자에게 보내져서 바로 대응이 가능하겠지만,
그렇지 않은 경우 문제가 커진 후에나 장애처리가 될 것이다.
예기치 못한 상황에서 자동적으로 시스템을 복구하는 방법이 있다.
JVM옵션에서 이것을 제공하고 있다.
OnOutOfMemoryError 옵션을 이용하면, OutOfMemroy 발생 이후에 특정 동작을 지정할 수 있다.
톰캣 옵션 추가 방법
setenv.sh에 "-XX:+HeapDumpOnOutOfMemoryError -XX:OnOutOfMemoryError" 옵션 추가
JAVA_OPTS="$JAVA_OPTS -Xms256m -Xmx1024m \
-XX:MaxPermSize=128m \
-XX:+HeapDumpOnOutOfMemoryError \
-XX:OnOutOfMemoryError=/home/ec2-user/tomcat/bin/tomcatRestart.sh"
OOME 시 톰캣 재기동 tomcatRestart.sh
#!/bin/sh
kill -9 $(ps aux |awk '/tomcat/ {print $2}')
sleep 2
/home/ubuntu/tomcat/bin/startup.sh
톰켓 강제 중지
CATALINA_OPTS="-Djava.awt.headless=true -server \
-Xms256m -Xmx1024m \
-XX:MaxPermSize=128m \
-XX:+HeapDumpOnOutOfMemoryError \
-XX:OnOutOfMemoryError=kill -9 %p"
Heap Dump on OutOfMemoryError
OutOfMemoryError로 인한 JVM에 종료시 Heap Dump를 생성해준다.
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/path
-XX:HeapDumpPath를 생략하면 JVM 시작 디렉토리에 java_pid<pid>.hprof형태로 생성된다.
-XX:+PrintClassHistogramAfterFullGC, -XX:+PrintClassHistogramBeforeFullGC 등의 옵션으로 Full GC 전/후의 메모리 상태를 간략히 덤프할 수 있다.
반응형
'Programming > JAVA' 카테고리의 다른 글
[JAVA] 양방향 암호화기법 AES_ENCRYPT, AES_DECRPYT (0) | 2021.01.02 |
---|---|
[JAVA] JAVA 연습문제 풀어볼 수 있는 곳 (0) | 2020.12.19 |
[JAVA] HashMap, LinkedHashMap 차이점 및 사용법 (0) | 2020.12.05 |
[JAVA] 이전달 1일 전의 날짜인 경우 Exception 처리(Calendar) (0) | 2020.12.03 |
[JAVA] Stream allMatch(), anyMatch(), noneMatch() (0) | 2020.12.01 |
Comments