서블릿 객체는 쓰레드에 의해 호출되어진다. 그리고 여러 요청을 동시에 처리하기 위한 멀티 쓰레드는 필수적이다.
멀티 쓰레드를 지원하는 두 가지 방식이 있다.
1. 요청마다 생성
말 그대로 요청이 들어올 때마다 해당 요청을 처리하기 위한 쓰레드를 새로 생성한다.
이 경우 요청이 늘어남에 따라 컨텍스트 스위칭 비용이 무한정으로 늘어날 수 있다는 단점이 있다.
2. 쓰레드 풀
WAS 내부에서 사용할 일정 개수의 쓰레드들을 쓰레드 풀에 미리 생성한다.
요청이 들어오면 이 쓰레드 풀에서 쓰레드를 할당받아 요청을 처리한다.
사용이 완료된 쓰레드는 다시 풀에 반납한다.
쓰레드 풀의 쓰레드가 모두 사용중일 경우에 새로 들어오는 요청은 거절하거나 특정 수만큼 대기하도록 할 수 있다.
쓰레드 풀 방식을 사용하기 위해 최대 쓰레드 수를 얼마로 설정하는지가 중요하다. (톰캣은 최대 200개의 쓰레드가 디폴트 값이다.)
적절한 CPU 사용률을 유지할 수 있도록 MAX thread를 적절하게 설정해줘야 한다.
'김영한님 스프링 강의 정리 > 스프링 MVC' 카테고리의 다른 글
Servlet (0) | 2021.08.15 |
---|---|
Web Server vs WAS(Web Application Server) (0) | 2021.08.15 |