-
AWS 배포환경에서 OOME 발생시개발/AWS & 서버 2020. 4. 16. 11:32
aws elasticbeanstalk에 올린 spring boot 스케쥴링이 실행되지 않았다. 로그를 확인해 보니
java.lang.OutOfMemoryError: Java heap space
t2.micro 환경에서 대량의 데이터를 저장하는데 @transactional을 걸어두다보니 생긴일이다.
t2.micro의 메모리는 1G
transaction으로 처리되어 저장되는 데이터가 많다 했는데 결국 OOME가 발생하였다.
현재는 얼마였고, 어느정도까지 늘리면 될까??
리눅스 환경에서 JVM의 힙메모리가 궁금해졌다.
JAVA default Heap size는 다음과 같은 명령어로 확인이 가능하다.
[Linux]
java -XX:+PrintFlagsFinal -version 2>&1 | grep -i -E 'heapsize|permsize|version'
[Windows]
java -XX:+PrintFlagsFinal -version 2>&1 | findstr /I "heapsize permsize version"
uintx ErgoHeapSizeLimit = 0 {product}
uintx HeapSizePerGCThread = 87241520 {product}
uintx InitialHeapSize := 16777216 {product}
uintx LargePageHeapSizeThreshold = 134217728 {product}
uintx MaxHeapSize := 260046848 {product}와 같은 결과에서
1G의 t2.micro 서버의 max heap memory는 256mb가 된다.
또,
오라클 java 문서(http://www.oracle.com/technetwork/java/ergo5-140223.html) 에 따르면,
jvm을 server class로 실행하면 초기 heap size는 메모리의 1/64 이고, 최대 heap size는 1/4까지 늘어나기 때문에
1G인 서버에서는 초기 16MB, 최대 256MB로 계산하면 된다.
그럼 256MB를 늘리기 위해 PROCFILE에
-Xms512m -Xmx512m
을 추가하여 재 배포하였다.
참고
https://sarc.io/index.php/java/1092-jvm-default-heap-size
'개발 > AWS & 서버' 카테고리의 다른 글
aws region별 핑 속도 측정 (0) 2020.04.20 url 포트번호 없이 사용 (prerouting) (0) 2020.04.17 aws Elastic Beanstalk 에 운영중인 서버 http에서 https로 전환하기 (0) 2020.02.13 aws SSH접속시 RSA 공유키 충돌 문제 - WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! (0) 2020.01.29 개인 개발용 aws 생성 및 ftp 접속 (0) 2019.06.18 댓글