connection pool에서 connection 순환 속도을 고려하지 않으면 조용히 서비스 성능이 악화된다.
·수정 2026.04.23·수정 1회
요약
- 핵심 아이디어 한 줄 요약
- “이 노트는 왜 중요한가?” → 맥락 설명
본문
- connection pool은 현대적인 어플리케이션에서 비싼 network socket들을 재사용하려는 방식임
- 50 connection은 수 백만개의 요청을 처리할 수 있음
- 하지만 connection이 stuck 되고 pool이 shrink되다가 0이되면 느려지는게 아니라 죽음
- connection pool과 관련된 다양한 사례들
- 링크드인은 stored procedure가 느려지면서 4시간 outage를 겪었음
- Stripe는 downstream 서비스가 느려지면서 statving connection과 blocking all transaction으로 연속적인 결제 실페 을 겪음
- 이런 사례들은 단순히 capacity에 대한 문제가 아니라 circulation 문제 였음
core insight: 가용성을 넘는 순환 속도
- 50개의 공간을 가진 connection pool을 생각해보자
- 각 요청은 일시적으로 해당 공간을 점유함
- 만약 하나의 요청이 10ms라면 space는 빠르게 양도 될 것임 하지만 만약 어떤 사람이 10초동안 점유하고 있다면 50개의 공간은 long term parker로 인해 과도하게 점유 될 것임
- queue가 넘칠 것이고 결국에는 모든게 멈춤
- 여기 불확실한 측면이 있음 100개의 풀이 있고 각 쿼리가 평균 10ms라면 각각은 10,000QPS를 handle 할 수 있음
- 하지만 1000 pool이 100ms 쿼리라면 circulation이 느리기 때문에 더 자주 exhausted 될 것임
참고
https://howtech.substack.com/p/connection-pool-exhaustion-the-silent
˜