728x90
📌 프로세스란?
- 실행 중인 프로그램으로 프로세스는 데이터와 메모리 등의 자원, 스레드로 구성된다.
📌 스레드란?
- 프로세스 내에서 실제 작업을 수행하는 주체를 의미한다.
- 모든 프로세스에는 한 가지 이상의 스레드가 존재한다.
- 두 개 이상의 스레드를 가지는 프로세스를 멀티 스레드 프로세스라고 한다.
- 동시 처리가 필요하면 스레드를 추가로 생성할 수 있다.
- 사실 매우 빠르게 번갈아 가며 실행하는 것이다.
💡 요청마다 스레드를 생성 시 장단점
장점
- 동시 요청을 처리할 수 있다.
- 리소스(CPU, 메모리)가 허용할 때까지 처리가 가능하다.
- 하나의 스레드가 지연되어도 나머지 스레드는 정상작동한다.
- 여러 스레드가 서로 관계가 없기 때문이다.
단점
- 스레드는 생성 비용이 매우 비싸다.
- 고객 요청이 올 때마다 생성하면 응답속도가 느려진다.
- 콘텍스트 스위칭 비용이 발생
- 실행할 스레드를 바꾸는 데 드는 비용을 말한다.
- 스레드 생성에 제한이 없어 요청이 너무 많으면 CPU, 메모리 임계점을 넘어 서버가 죽을 수도 있다.
- 이를 해결하기 위해 스레드 풀을 만들어 미리 스레드 개수를 정해 넣어놓고, 요청이 올 때마다 스레드 풀에서 스레드를 꺼내 요청을 처리하고 다시 스레드 풀에 넣는 방식을 쓴다.
🤔 스레드 풀이란?
요청마다 스레드를 생성하는 것에 대한 단점을 보완할 수 있다.
- 특징
- 필요한 스레드를 스레드 풀에 보관하고 관리한다.
- 스레드 풀에 생성 가능한 스레드의 최대치를 정할 수 있다.
- 톰캣의 경우 최대 개수인 200개가 디폴트값이며 변경이 가능하다.
- 사용
- 스레드가 필요하면 이미 생성되어 있는 스레드를 스레드 풀에서 꺼내어 사용한다.
- 사용이 끝나면 스레드 풀에 해당 스레드를 반납한다.
- 최대 스레드가 모두 사용 중이어서 스레드 풀에 스레드가 없는 경우 요청을 거절하거나 대기하도록 설정할 수 있다.
- 장점
- 스레드가 미리 생성되어 있으므로 스레드를 생성하고 종료하는 비용이 절약되며 응답 시간이 빠르다.
- 생성 가능한 스레드의 최대치가 있으므로 한 번에 수많은 요청이 들어와도 기존 요청을 안전하게 처리할 수 있다.
WAS의 멀티 스레드를 지원
- 멀티 스레드에 대한 부분은 WAS가 알아서 처리한다.
- 개발자가 멀티 스레드 관련 코드를 신경 쓰지 않아도 된다.
- 개발자는 마치 싱글 스레드 프로그래밍을 하듯이 편리하게 소스코드를 개발할 수 있다.
- 멀티 스레드 환경이므로 싱글톤 객체(서블릿, 스프링 빈)는 주의해서 사용해야 한다.
728x90
'넓고 얕은 웹 지식' 카테고리의 다른 글
NGINX 설치 및 간단히 알아보기 (0) | 2023.05.12 |
---|---|
프록시 서버(Proxy Server) 요약 정리 (0) | 2023.05.12 |
서블릿(Servlet) 1분 요약 정리 (0) | 2023.02.05 |
웹 서버와 웹 애플리케이션 서버(WAS) 1분 요약 (0) | 2023.02.05 |
CSR, SSR (0) | 2022.10.30 |