ECS OutOfMemoryError: Java heap space

EnoSoup·2021년 7월 23일
0

AWS

목록 보기
2/19
post-thumbnail

상황

2021년 6월 27일 18:00 ~ 2021년 7월 11일 사이 G2Service Prod 작업에서 지속적인 OutOfMemoryError 관련 문제가 발생되어 무분별한 Auto Scaling 이벤트가 발생되었음.

  • 문제점 : AutoScaling 이벤트 작업으로 운영되고 있으나, AutoScaling 작업 추가로 인해 Cost 비용이 낭비되는 부분

원인

JVM Heap Size 부족으로 인한 Java Object를 Heap에 할당하지 못하여 OutOfMemoryError 발생 (JVM Option 설정을 하지 않은 경우 발생)

  • CPU 사용량 내역
  • 부하 발생 관련 에러 내역
  • Auto Scaling 이벤트 내역
  • Auto Scaling Task 연결 후 JVM Heap 사용 내역 (1.8GB Commit)
  • Auto Scaling 해제 후 CPU 사용량
  • 기존 G2Service JVM Heap Size
    JVM Heap (Min: 495MB, Max: 495MB)
    JVM Non-Heap (Max: 1.2GB)
    JVM Total (1.7GB)
  • 동일증상 내역 (기간 : 21-06-13 ~ 07-11)

해결방안

ECS JVM Heap Option 설정

  • ECS Task definition.json JVM Heap Option Parameters 설정
"entryPoint" : [
    "java",
    "-jar",
    "-Xms1024m",
    "-Xmx1024m",
    "-Dspring.profiles.active=***",
    "-Djasypt.encryptor.password=***",
    "G2service.jar"
  • JVM Option 적용 후 JVM Heap Size
    JVM Heap (Min: 990MB, Max: 990MB)
    JVM Non-Heap (Max: 1.2GB)
    JVM Total (2.2GB)

모니터링

  • 7.12일 15:10, JVM Option 적용 후 CPU 사용량
    기존 클러스터 대비 안정적인 CPU 사용량을 보이고 있으며, 해당 에러 관련 AutoScaling 이벤트는 발생되지 않음.
  • 7.13일 12:32, 네트워크 트래픽 증가로 AutoScaling 이벤트 발생
    네트워크 InBound 트래픽 증가로 인해 Task 작업 부족으로 인한 이벤트 발생, 그 이후 서비스 사용량 안정적

참조 URL

profile
Cloud Engineer@Plateer. 클라우드 상에서 엔지니어링을 재미있게 하는 엔지니어입니다.

1개의 댓글

comment-user-thumbnail
2023년 8월 3일

안녕하세요.
혹시 위의 모니터링 툴은 어떤걸까요?

답글 달기