미독 채팅 개수 API 성능 개선기 — `SELECT *` + 앱 레벨 카운트가 KMS를 두드린 이야기
트러블슈팅·12분 읽기
미독 채팅 개수를 구하는 단순한 API가 커넥션 풀을 고갈시키던 원인을 추적해, `SELECT *` + 앱 레벨 `count`와 `@Convert(KmsStringConverter)` 조합이 만든 KMS Decrypt 호출 폭주를 드러내고, 단일 `COUNT(*)` 집계 쿼리로 전환해 해결한 과정을 정리합니다.
2개의 글
미독 채팅 개수를 구하는 단순한 API가 커넥션 풀을 고갈시키던 원인을 추적해, `SELECT *` + 앱 레벨 `count`와 `@Convert(KmsStringConverter)` 조합이 만든 KMS Decrypt 호출 폭주를 드러내고, 단일 `COUNT(*)` 집계 쿼리로 전환해 해결한 과정을 정리합니다.
DB 커넥션 풀이 왜 필요한지, max pool size를 어떻게 봐야 하는지, 풀 고갈이 왜 발생하는지, HikariCP 핵심 옵션과 실무 점검 포인트를 정리합니다.