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%