요청- 응답 시 서블릿 객체를 호출하여 비즈니스 로직을 수행한다.
그런데 이 서블릿 객체를 누가 호출해주는가?
바로 쓰레드가 호출해준다.
쓰레드란, 애플리케이션 코드를 하나하나 순차적으로 실행하는 것을 말한다. 자바 메인 메서드를 처음 실행한다면 main이라는 이름의 쓰레드가 실행된다. 이 쓰레드라는 것이 없다면, 애플리케이션 실행이 불가능하다.
- 단일 요청 시: 연결에 쓰레드를 할당하여 쓰레드로 서블릿을 호출한다.
- 다중 요청 시: 요청의 처리가 끝날 때까지 다음 요청은 순서를 기다려야한다. 문제는 처리 지연 시 발생한다.
만약 요청1의 처리가 오래 지연된다면, 요청2는 요청1의 처리 완료까지 순서를 기다리다가 타임아웃이 되고 요청1도 그대로 타임아웃이 되는 불상사가 발생할 수 있다.
그렇다면 이 문제를 어떻게 해결할 수 있을까?
요청마다 쓰레드를 생성해주면 된다!
*단점: 쓰레드는 컨텍스트 스위칭 비용이 발생한다. 고객 요청이 너무 많이 와서 쓰레드가 계속 생성된다면 cpu, 메모리 임계치를 넘어 죽어버릴수도있다...
해결!
쓰레드풀을 이용한다. 쓰레드에는 미리 쓰레드를 많이 만들어놓고, 빌려줬다가 사용이 끝나면 다시 받아와 쓰레드풀에 넣어놓는다.
#was_web application server
'여러가지 모르는 지식들' 카테고리의 다른 글
인코딩과 디코딩 (0) | 2024.08.31 |
---|---|
aws 용어 정리 (0) | 2024.03.28 |
starUML column 안보이는 경우 (0) | 2023.10.31 |
intellij 단축키 (0) | 2023.07.25 |