본문 바로가기
💻 𝗪𝗲𝗯

[Web] 아파치-멀티 프로세스, 톰캣-멀티 쓰레드 이유는?

by 비타민찌 2022. 11. 22.
728x90

1. Web Server vs WAS

Web Server

클라이언트가 서버에 페이지 요청을 하면 요청을 받아 정적 컨텐츠(.html, .png, .css등)를 제공하는 서버다.

더보기

클라이언트에서 요청이 올 때 가장 앞에서 요청에 대한 처리를 한다. 클라이언트의 요청을 기다리고 요청에 대한 데이터를 만들어서 응답하는 역할 (정적 데이터)을 수행하고 정적 컨텐츠가 아닐 경우, WAS에게 전달한다. 대표적으로 Apache, Nginx가 있다.

 

Apach

  • 멀티 프로세스 + 멀티 스레드
  • 스레드풀에 미리 스레드를 만들어 놓는다
  • 클라이언트 요청 하나에 스레드 하나 대응

 

Apache, nginx 비교

더보기

Apache 멀티 프로세스와 멀티 스레드 스레드풀에 미리 스레드를 만들어 놓는다. 클라이언트 요청 하나에 스레드 하나 대응 Nginx 멀티 프로세스 + 싱글 스레드 worker 프로세스는 초당 수천개의 동시 접속과 요청을 처리할 수 있다. 프로세스나 스레드에 대한 생성 / 파괴 패턴이 없기 때문에 빠르다.

 

WAS 

동적 컨텐츠를 제공하기 위해 만들어진 애플리케이션 서버. (DB조회, 로직처리가 요구되는 컨텐츠)

더보기

JSP,Servlet 구동 환경 제공된다. 컨테이너, 웹컨테이너, 서블릿 컨테이너라고도 부른다.

(JSP, servlet을 실행시킬 수 있는 소프트웨어 = 컨테이너)

동작 프로세스 웹서버로부터 요청이 오면 컨테이너가 받아서 처리 컨테이너는 web.xml을 참조하여 해당 서블릿에 대한 쓰레드 생성하고 httpServletRequest와 httpServletResponse 객체를 생성하여 전달한다. 컨테이너는 서블릿을 호출한다. 호출된 서블릿의 작업을 담당하게 된 쓰레드는 doPost()또는 doGet()을 호출한다. 호출된 doPost(), doGet() 메소드는 생성된 동적 페이지를 Response객체에 담아 컨테이너에 전달한다. 컨테이너는 전달받은 Response객체를 HTTPResponse형태로 바꿔 웹서버에 전달하고 생성되었던 쓰레드를 종료하고 httpServletRequest, httpServletResponse 객체를 소멸시킨다.

 

2. 멀티 프로세스 vs 멀티 스레드

 

프로세스

프로세스는 코드로 작성된 프로그램이 메모리에 적재되어 사용할 수 있는 상태가 된 것. 프로그램은 보조 기억장치에 존재하며, 실행되기를 기다리는 명령어(코드)와 정적인 데이터의 묶음. 즉, 프로세스는 실행 중인 프로그램이다.

 

스레드

스레드(thread)란 프로세스(process) 내에서 실제로 작업을 수행하는 주체. 모든 프로세스에는 한 개 이상의 스레드가 존재하여 작업을 수행하고, 두 개 이상의 스레드를 가지는 프로세스를 멀티스레드 프로세스(multi-threaded process)라고 부른다.

 

멀티 프로세스(Multi process)

두 개 이상 다수의 프로세서(CPU)가 협력적으로 하나 이상의 작업(Task)을 동시에 처리하는 것. (병렬처리)각 프로세스 간 메모리 구분이 필요하거나 독립된 주소 공간을 가져야 할 경우 사용한다.

 

멀티 스레드(Multi Thread)

하나의 프로세스에 여러 스레드로 자원을 공유하며 작업을 나누어 수행하는 것.

 

 

3. 아파치, 톰캣은 각각 멀티 프로세스인가 멀티 쓰레드인가?

 

아파치는 멀티 프로세스로 구현되어 있다. 하지만 설정에 따라 멀티 쓰레드를 같이 운용할 수 있다.

톰캣은 요청을 처리하기 위한 쓰레드 풀을 관리하고 있다. 그리고 요청이 오면 해당 쓰레드 풀에서 쓰레드를 꺼내 요청을 처리하도록 한다.

라고들 구글에 나오는데..

 

멀티스레딩은 하나 이상의 순차적 명령어 세트를 동시/병렬적으로 실행하는 특성 때문에 톰캣과 같은 WAS에서 사용하나보다.

멀티 스레드는 요청에 대한 응답을 기다리지 않고, 자기의 할 일을 수행한다. 응답이 오면 원할 때 작업을 처리할 수 있고 -> 그래서 Blocking에 대한 걱정을 할 필요가 없으니..

 

728x90

댓글