WAS에 요청이 왔을때, 서블릿에게 요청을 누가하지?
그것을 바로 스레드가 한다.
쓰레드
쓰레드 풀
연결 요청이 오면 쓰레드 풀에 있는 스레드를 사용하며 스레드를 사용후 다시 쓰레드 풀에 반납한다.
최대 스레드가 모두 사용중이며 스레드가 없으면
기다리는 요청은 거절하거나 특정 숫자만틈만 대기하도록 설정할 수 있음
스레드가 미리 생성되어 있으므로, 스레드를 생성하고 종료하는 비용이 절ㅇㄱ됨
실무 팁
쓰레드 풀의 적정 숫자는 어떻게 찾을까?
애플리케이션 로직의 복잡도,CPU,메모리 리소스 상황에 따라 모두 다름
그래서 성능 테스트를 해봐야 함!
최대한 실제 서비스와 유사하게 성능 테스트 시도
제이미터,아파치 ab 등으로 병목 포인트를 찾아서 튜닝을 하면 됨
핵심은 WAS의 멀티 스렉드가 지원된다는 것
개발자가 멀티 쓰레드 관련 코드를 신경쓰지 않아도 된다는 것
멀티 쓰레드 환경이므로 싱글톤 객체는 주의해서 사용해야함!!
왜냐하면 싱글톤의 공유 변수 값이 멀티 스레드로 공유되기 때문에 값이 어떻게 변할지 모를 수 있기 때문이다.