🗄️DB 커넥션 풀 크기 계산기

초당 요청 수와 쿼리 처리 시간을 입력하면 적정 풀 크기를 알려드려요.

항목
초당 필요 동시 연결 수 (여유율 제외)-
적용 여유율-%

커넥션 풀, 크면 좋은 게 아닙니다

데이터베이스 커넥션 풀 크기를 정할 때 흔한 오해가 "클수록 안전하다"는 생각입니다. 하지만 커넥션 하나하나가 데이터베이스 서버의 메모리와 CPU 컨텍스트를 점유하기 때문에, 필요 이상으로 큰 풀은 오히려 데이터베이스 성능을 떨어뜨릴 수 있습니다. 적정 크기를 찾는 가장 실용적인 방법은 리틀의 법칙(Little's Law)을 응용하는 것입니다.

리틀의 법칙에 따르면, 특정 시점에 필요한 평균 동시 연결 수는 '초당 요청 수 × 평균 처리 시간'으로 근사할 수 있습니다. 이 계산기는 초당 요청 수(RPS)와 평균 쿼리 처리 시간을 입력받아 이 값을 계산하고, 트래픽 변동에 대응할 여유율을 더해 최종 권장 풀 크기를 제시합니다. 예를 들어 초당 100개 요청이 들어오고 쿼리 하나에 20ms가 걸린다면, 이론상 필요한 동시 연결은 2개에 불과하지만 트래픽 변동을 고려해 여유율을 더하는 것입니다.

참고로 HikariCP 같은 유명 커넥션 풀 라이브러리는 'CPU 코어 수 × 2 + 유효 디스크 스핀들 수' 같은 하드웨어 기반 공식도 함께 제시합니다. 두 접근법을 함께 참고해 트래픽 패턴과 서버 스펙에 맞는 크기를 찾는 것이 좋습니다. 풀 크기를 정한 뒤에는 실제 운영 환경에서 커넥션 대기 시간과 사용률 지표를 모니터링하며 값을 조정하는 것이 안전합니다.

자주 묻는 질문

풀 크기를 크게 잡으면 무조건 안전한가요?

아닙니다. 불필요하게 큰 풀은 데이터베이스 서버의 리소스를 낭비시켜 오히려 전체 성능을 떨어뜨릴 수 있습니다.

여유율은 얼마로 설정해야 하나요?

트래픽 변동이 큰 서비스는 20~30%, 안정적인 서비스는 10~15% 정도가 일반적인 참고값입니다.

CPU 코어 수 기반 공식과 어떻게 다른가요?

코어 수 기반 공식은 하드웨어 한계를, 이 계산기는 실제 트래픽 패턴을 기준으로 접근하는 방식으로 서로 보완적으로 활용할 수 있습니다.