유튜브블로그Top 10
내 프로필

데브허브 안내
소개업데이트 소식

데브허브 커뮤니티

[10분 테코톡] 제프의 Thread Pool

우아한테크

2025. 9. 19.

0

#backend
#infra
  • 스레드풀 주제 선정 계기, 스레드 설명, 스레드풀 필요성, 스프링부트 다중 요청 처리 방식, 스레드풀 개수 설정 방법 설명 💡
  • 사용자 요청이 동시다발적으로 서버에 들어올 때 병렬 처리를 위해 각 요청마다 스레드 할당 🧵
  • 스레드는 프로세스 내 작업 흐름 단위, 같은 메모리 공간 공유, CPU 코어당 한 번에 하나의 스레드만 실행 ⚙️
  • 음식점 비유: 프로세스(음식점), 스레드(요리사), CPU 코어(조리대), 작업(음식 주문), 작업 큐(주문 목록), 컨텍스트 스위칭(요리 도구 교체) 🍳
  • 작업 요청마다 스레드 생성 시, 커널 스레드 생성 비용 증가, 전체 요청 처리 시간 증가 🐌
  • 스레드 무분별하게 생성 시 컨텍스트 스위칭 빈번하게 발생, 오버헤드 발생 낭비 💸
  • 스레드풀은 한정된 스레드 미리 생성, 요청 시 스레드 할당 후 재사용, 스레드 생성 비용 감소, 컨텍스트 스위칭 빈도 감소 ♻️
  • 스프링 부트는 톰캣 내장, 톰캣은 최적화된 스레드풀 제공, 서비스에 맞는 수치로 수정 필요 🛠️
  • 톰캣 스레드풀 속성: accept-count(대기열 크기), max-threads(최대 스레드 개수), min-spare-threads(최소 예비 스레드 수), max-queue-capacity(작업 큐 크기) 🧰
  • 톰캣 스레드풀 메커니즘: 서버 시작 시 idle 스레드 생성, 요청 시 idle 스레드 할당, 스레드 부족 시 새 스레드 생성, 연결 수 제한 초과 시 거절 🚦
  • 스레드풀 적정 크기 공식: CPU 코어 수 * (평균 CPU 사용 시간 비율의 역수) ➕
  • 외부 자원 커넥션 풀 사용 시, 스레드풀과 DB 커넥션 풀 크기 균형 맞춰야 함 ⚖️
  • 스레드풀 개수 너무 적으면 CPU 대기, 너무 많으면 컨텍스트 스위칭 과부하, 외부 자원 과부하 💥
  • 서비스 운영 시 벤치마크와 모니터링으로 CPU 사용률 효율적인 구간 찾아 설정 중요 🎯
  • 스레드풀 사용으로 스레드 생성 비용 감소, 자원 사용 제어, 성능 및 안정성 향상 🚀
  • 스레드풀 크기 설정은 정답 없고, CPU와 I/O 작업 고려, 모니터링으로 최적 값 찾아야 함 👀

Recommanded Videos