본문 바로가기
Spring

Thread Pool 이란 도대체 무엇인가!

by 쁘니쁘나 2022. 6. 17.

 

Thread Pool 동작원리

 

Thread Pool

  • 필요한 Thread 를 Thread Pool 에 보관하고 관리한다.
  • Thread Pool 에 생성 가능한 Thread 최대치를 관리한다. 톰켓은 최대 200개 기본 설정 ( 변경 가능 )
  • Thread 가 필요하면, 이미 생성되어 있는 Thread 를 Thread Pool 에서 꺼내서 사용
  • 사용을 종료하면 Thread Pool 에 해당 Thread 를 반납
  • Thread 가 미리 생성되어 있으므로, Thread 를 생성하고 종료하는 비용(CPU)이 절약되고, 응답 시간이 빠르다.
  • 생성 가능한 Thread 의 최대치가 있으므로 너무 많은 요청이 들어와도 기존 요청은 안전하게 처리할 수 있다.

 

✨ 최대 Thread 가 모두 사용중이여서 Thread Pool 에 남아있는 Thread 가 없다면???

➡️ 기다리는 요청은 거절하거나 특정 숫자 만큼만 대기하도록 설정할 수 있다.

 

 

✨ Thread Pool 에 최대 Thread 개수를 너무 낮게 설정하지말자

➡️ 만약 최대 10개로 설정했는데 서비스가 대박나서 100개의 요청이 온다면 나머지 90개는 대기가 발생하게 된다. 그래서 고객들이 왜 안되냐 너무 느리다 문의가 와서 서버를 들어가 CPU 사용률을 보면 5%.. 막 이렇다. 이런경우가 생기지 않도록 Thread Pool 에 Thread 최대 개수를 너무 낮게 설정 하지말자! (개발자로서 이런경우는 핵창피한 경우!!! 완전 잘못만든거임!)

 

 

 

참조


인프런 - Spring 기본편

 

댓글