← 질문 목록
#229깊이 0
커넥션 풀을 사용하는 이유는 무엇인가?
연결마다 TCP·인증·세션 설정을 거쳐야 해서 비용이 크기 때문이다. 매번 연결을 맺고 끊는 과정에서 TCP 핸드셰이크와 인증 과정이 반복되어 응답 시간이 늘어난다.
- 1. 클라이언트에서 커넥션 풀로: 연결 요청
- 2. 커넥션 풀에서 클라이언트로: 유효한 커넥션 대여
- 3. 클라이언트에서 커넥션 풀로: 사용 후 반납
풀에 미리 연결을 생성해 두고 대여하는 방식으로 동작한다. 기존 연결을 빌리면 요청마다 연결을 만드는 시간이 사라져 처리량이 늘어난다.
풀의 크기를 너무 크게 잡으면 DB 서버의 메모리와 CPU 자원을 과하게 사용한다. 반대로 너무 작게 잡으면 요청이 밀려 대기 시간이 길어진다.
동시 요청 수와 DB가 감당할 연결 수를 함께 재며 크기를 정한다. 부하 시험에서 대기 시간과 DB 사용률이 꺾이는 지점을 찾는다.
추천 꼬리질문
관련 질문
- DB 커넥션을 매번 새로 맺는 비용이 큰 이유는?데이터베이스DB 커넥션 생성 비용이 크다는 점을 이해해야 커넥션 풀의 필요성을 이해할 수 있다.
- 스레드 풀을 사용하는 주된 이유는 무엇인가?운영체제커넥션 풀과 스레드 풀은 모두 리소스의 재사용을 통해 생성 및 파괴 비용을 줄이는 풀링(Pooling) 개념을 공유한다.
- ORM을 사용하는 이유는 무엇인가?프레임워크ORM은 데이터베이스 연결 효율을 높이기 위해 내부적으로 커넥션 풀을 활용하여 쿼리를 실행한다.
- 커넥션 풀 크기를 CPU 코어 수로 잡는 이유는?데이터베이스커넥션 풀의 존재 이유를 알아야 적정 크기 산정 논의가 읽힌다
- TCP 연결을 끊을 때 TIME_WAIT 상태가 필요한 이유는?네트워크