동시요청 - 멀티쓰레드
요청이 오면 서블릿 객체를 누가 호출하는가?
정답 : 쓰레드
쓰레드란?
- 자바 메인 메서드를 처음 실행하면 main이라는 이름의 쓰레드가 실행
- 코드를 순차적으로 실행하는 쓰레드
- 쓰레드하나는 한번에 하나의 코드 라인만 수행
- 동시처리가 필요하면 쓰레드를 추가로 생성
요청이 하나면 요청 시 쓰레드 하나 할당해서 요청처리를 진행한다.
하지만 요청마다 쓰레드 생성에는 단점이 있다.
- 쓰레드 생성 비용이 매우 비싸다 (CPU, 메모리)
- 올때마다 생성하면 **'응답 속도'**가 늦어진다.
- 쓰레드가 많아질수록 '컨텍스트 스위칭' 비용이 발생한다.
- 쓰레드 생성 제한이 없다. 요청을 무제한으로 받는다.
(CPU, 메모리 임계점을 넘으면 서버가 죽는다)
→ 컨텍스트스위칭, 응답속도, 자원부족문제
이를 WAS는 어떻게 해결했을까?