WEB/Backend

[Spring Boot] HeapDumpOnOutOfMemoryError : java heap size 에러 해결 과정

김쿸후 2024. 6. 21. 15:55

문제 상황

HeapDumpOnOutOfMemoryError : java heap size

이 뜨면서 cpu 사용량은 그대론데 한순간에 뻗어버림 → scaling 도 안되고 그냥 죽음.. 최악

문제 원인

  • 지난 배포 이후로 생긴 오류로 추정 됨
    • 지난 배포 : 성별을 List 에 담는 로직으로 변경했었음
    • List 에 때려 박는 로직은 heap size 오류가 생기는 듯

처리

2024.03.13

  • 리스트에 성별 담는 것에서 쿼리 자체에 성별 필터링 / 주선자 필터링을 넣는 것으로 변경
  • Heap size 오류 나면 힙 덤프 찍히도록 /var/log에 찍히도록 추가함

2024.03.18

  • 저녁에 다시 카드 보여주는 로직에 반복문 내부에 디비 연결하는 로직 포문 밖으로 뺌

2024.03.20

힙이 왜 터질까?

원인 1 List 가 너무 길면 터진다
  • 가장 긴 List인 카드 발급 로직 코드 개선 → List 사이즈 2만개에서 4000개로 줄임
원인 2 DB 연결이 너무 많다.
  • 중복되는 DB 연결 제거 → 객체 재사용

⇒ 결과 : 오늘 가장 서버 부하 심했을 때 cpu 6%