← 질문 목록
#9깊이 0

커넥션 풀 크기를 CPU 코어 수로 잡는 이유는?

데이터베이스심화동시성

코어 수가 동시에 돌릴 수 있는 CPU 작업 수를 정해 병목을 추정하는 기준이 되기 때문이다. I/O로 대기하는 요청까지 코어 수로 묶이지는 않는다.

코어 수가 적은데 풀만 키우면 컨텍스트 스위칭DB 쪽 경합이 늘어난다. 다만 I/O 대기가 긴 작업이라면, DB 쪽에 다른 병목이 없을 때에 한해 코어 수보다 크게 잡을 수 있다.

항목내용
풀 크기 시작값코어 수 × 목표 CPU 사용률 × (1 + 대기 시간 / 계산 시간)
병목 지점CPU 코어 수. 연산 처리의 실제 한계

DB 서버의 CPU는 쿼리 실행 계획을 짜고 데이터를 연산한다. 풀 크기가 너무 크면 수많은 스레드가 CPU 점유를 위해 경쟁하며 오버헤드가 발생한다.

반면 너무 작으면 CPU가 놀고 있어도 요청이 큐에서 대기한다. 이 식은 스레드 풀 휴리스틱을 빌린 출발점일 뿐이다. DB의 연결 한도와 서비스 인스턴스 수까지 반영해 부하 시험으로 확정한다.

풀 크기는 CPU 코어 수와 디스크 I/O 대기 시간을 함께 보고 정한다.

추천 꼬리질문

0/300

적은 내용은 AI 학습에 쓰일 수 있습니다. 이름이나 연락처는 넣지 말아 주세요.

관련 질문

커넥션 풀 크기를 CPU 코어 수로 잡는 이유는?