사
사람인
April 27, 20231회
[장애회고] ORM(JPA) 사용 시 예상치 못한 쿼리로 인한 HikariCP 이슈
간단 소개
ORM 사용 중 예상치 못한 쿼리로 인한 HikariCP 이슈 분석 및 해결 과정, 관련 에러 재현 및 HikariCP 로깅 설정에 대한 상세 분석.
AI Summary
- 장애 원인 분석
- ORM(JPA) 사용 시 예상치 못한 쿼리가 문제의 근본 원인이었음
- 세금 계산서 관련 Entity를 약 46만 건 한 번에 호출하는 쿼리가 발생
- 해당 쿼리로 조회한 Entity가 Heap Memory를 모두 차지하여 Full GC가 계속 수행되는 상황 발생
- 새로운 요청까지 계속 유입되어 서버 재실행 전까지 CPU, Memory 과부하 발생
- 에러 로그 분석 및 재현
Connection is not available. request timed out예외는 HikariCP에서 Connection을 얻을 때 대기 시간이 초과될 경우 발생Unable to commit(rollback) against JDBC Connection예외는 Connection이 DB의wait_timeout시간 동안 활동이 없을 때 발생OutOfMemoryError: GC overhead limit exceeded는 Heap Memory 부족으로 GC를 수행했지만 확보가 되지 않을 때 발생
- HikariCP Connection Leak 로깅 설정
- HikariCP의 현 상태 로깅을 통해 Pool 상태와 Connection 활성화 여부 확인 가능
leak-detection-threshold옵션을 통해 Connection 반환이 늦어지는 슬로우 쿼리 유무 판별 가능- 실제 누수가 발생하면 SQLException과 함께 관련 로그가 출력됨
Next Feeds
복잡한 문제는 나눠서 단순화: 카카오페이 위키 마이그레이션 되돌아보기
카카오페이의 위키 마이그레이션 과정을 상세히 기록하고, 문제 해결 과정과 향후 계획을 설명합니다.
위키 마이그레이션컨플루언스XML 파싱데이터 매핑협업 도구
2023. 4. 25.
카카오페이

Libplanet PBFT 전환 제 0화 - 왜 PBFT로 전환을 시작했나요?
Libplanet이 PoW에서 PBFT를 거쳐 DPoS로 합의 알고리즘을 전환하는 이유와 과정, 그리고 그 이점에 대한 설명.
LibplanetPBFTDPoS합의 알고리즘블록체인
2023. 4. 24.
플라네타리움
문제 해결을 넘어 - 문제의 근본적인 원인 찾아가기 Part 2
CORS 에러의 근본 원인을 분석하고, Next.js 환경에서 효과적인 해결 방법을 제시하며, 문제 해결 과정의 가치를 강조합니다.
CORSNext.jsClient-Side Navigation브라우저 캐시crossorigin
2023. 4. 21.
카카오엔터테인먼트FE
문제 해결을 넘어 - 문제의 근본적인 원인 찾아가기 Part 2
CORS 에러의 근본 원인을 분석하고 해결하는 과정을 통해 얻을 수 있는 개발 지식과 경험의 중요성을 강조합니다.
CORSNext.jsClient-Side Navigation브라우저 캐시CSS 임포트
2023. 4. 21.
카카오엔터테인먼트FE
문제 해결을 넘어 - 문제의 근본적인 원인 찾아가기 Part 1
카카오페이지 정주행 모드 문제 해결 과정을 통해 문제의 근본적인 원인을 찾고 개선하는 과정을 분석합니다.
CORSswiper/reactNext.jsDynamic ImportdisplayName
2023. 4. 20.
카카오엔터테인먼트FE
문제 해결을 넘어 - 문제의 근본적인 원인 찾아가기 Part 1
카카오페이지 정주행 모드 오류의 근본 원인을 파악하고 해결하는 과정을 통해 문제 해결 능력 향상의 중요성을 강조합니다.
CORSswiper/reactNext.jsDynamic ImportES Module
2023. 4. 20.
카카오엔터테인먼트FE