문제 상황
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%
'WEB > Backend' 카테고리의 다른 글
[Spring Boot] Not enough space 메모리 부족 (0) | 2024.06.21 |
---|---|
[쿼리 튜닝] DB CPU가 99% - 쿼리 중 일부 컬럼만 가지고 오기 (0) | 2024.06.21 |
[Spring Boot] Thread starvation or clock leap detected : 문제 해결 (0) | 2024.06.21 |
백엔드 면접 질문 정리 (0) | 2022.03.29 |
각종 WEB 지식(1) : HTTP, REST, JSON에 대하여 (1) | 2020.10.06 |