본문으로 건너뛰기

maximumPoolSize

maximumPoolSize

커넥션 풀이 도달할 수 있는 최대 크기

HikariCP 공식 문서에는 다음과 같은 공식으로 소개하고 있다.

connections = ((core_count * 2) + effective_spindle_count)

core count의 경우 하이퍼스레딩을 제외한 CPU 코어 수를 의미한다.
effective spindle count의 경우 하드디스크와 관련이 있다. 한 개의 하드디스크는 하나의 spindle을 가진다.

2개의 코어를 가지고 있는 t4g.small의 경우 해당 공식을 적용하면 (2 * 2) + 1이 된다.
해당 공식이 SSD를 사용해도 잘 적용하는지에 대한 내용은 없었지만, 클라우드 환경에서는 해당 공식이 잘 적용된 것 같다.
쿼리를 실행하는데 시간이 많이 걸리는 경우 상황에 따라서 풀 사이즈를 늘릴 수 있을 것 같다.

만약 하나의 스레드가 여러 개의 커넥션을 들고 있는 경우 데드락이 문제가 될 수 있는데 이를 방지하려면 다음과 같은 공식을 사용할 수 있다.

pool size = Tn x (Cm - 1) + 1

Tn은 코어 수, Cm의 경우 단일 요청이 사용하는 최대 동시 연결 수다.

공식이 존재하지만 결국 애플리케이션이 작동하는 방식에 따라 적합한 pool size가 존재하니 애플리케이션의 성격이나, 성능 테스트를 통해 적합한 사이즈를 설정하는 것이 적합하다고 생각한다.

참고 자료

https://github.com/brettwooldridge/HikariCP