티스토리 뷰

개발

java heap dump 분석

달리는개발자 2021. 1. 6. 16:42

API 서버 운영 중 아래와 같이 OOM 오류가 나면서 k8s 파드가 재시작 되는 현상이 발생함.

java.lang.OutOfMemoryError: Java heap space

 

애플리케이션 상태를 보면 순간적으로 old 영역 used memory가 max까지 사용되는 모습이 보입니다.

heap dump 파일을 남겼고 MAT(Eclipse Memory Analyzer) 로 파일을 분석합니다.

MAT에서 아래와 같이 Leak이 의심되는 부분을 친절히 알려줍니다.

Leak Suspects Report

 

아래와 같이 BoundedConcurrentHashMap 에 데이터가 많습니다.

hibernate SessionFactoryImpl

 

hibernate 5.2.17 을 사용하고 있었고 hibernate 5.2.18 버전에서 메모리 사용량 개선이 있었고

아래 설정을 적용해서 in 절 쿼리 플랜을 최적화시켰습니다.

spring.jpa.properties.hibernate.query.in_clause_parameter_padding=true

 

그 뒤에도 다시 또 OOM이 나서 확인해보니 원인은 사용자 목록을 가져오는 부분이 있는데 페이징 처리 되어 있지 않고 전체 데이터를 가져와서 문제가 발생했습니다.

ResultSetImpl memory

 

참고

docs.jboss.org/hibernate/orm/5.4/javadocs/constant-values.html

 

Constant Field Values (Hibernate JavaDocs)

JavaScript is disabled on your browser. org.hibernate.* org.hibernate.boot.model.source.spi.AttributePath  Modifier and Type Constant Field Value public static final char DELIMITER 46 org.hibernate.boot.model.source.spi.AttributeRole  Modifier and Typ

docs.jboss.org

https://thorben-janssen.com/hibernate-5-3/

 

5 Reasons and 101 Bugfixes - Why You Should Use Hibernate 5.3

Hibernate 5.3 fixes more than 100 bugs, might reduce memory consumption dramatically and brings a bunch of smaller changes. Do you need more reasons?

thorben-janssen.com

https://kwonnam.pe.kr/wiki/java/hibernate/performance

 

java:hibernate:performance [권남]

 

kwonnam.pe.kr

https://www.manty.co.kr/bbs/detail/develop?id=

 

반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함