본문 바로가기

WS & WAS/apache

Apache 동작 방식

아파치

아파치는 클라이언트의 요청을 받으면 MPM(다중 처리 모듈) 방식으로 처리를 하는데 대표적으로

Prefork 방식과 Worker 방식과 아파치 2.4부터 추가된 event driven 방식이 있다.

 

Prefork 방식

 

 

실행중인 프로세스가 복제되어 처리가 된다.

프로세스는 한 커넥션만 처리하고 프로세스가 생성될때 메모리도 복제를해서 프로세스간 메모리 공유는 없어서 안정적이지만, 메모리등 리소스 사용량이 너무 많아진다.

 

Prefork 설정

<IfModule mpm_prefork_module>
StartServers                32
MinSpareServers          64
MaxSpareServers         128
ServerLimit                 512
MaxClients                 512
MaxRequestsPerChild   4000
</IfModule>

 

StartServers: 아파치 실행시 실행되는 프로세스 수

MinSpareServers: 최소 프로세스 수 , 프로세스 풀의 개념으로 보인다. default 5 

MaxSpareServes: 최대 프로세스 수, 프로세스 풀의 개념으로 보인다,  많아지면 프로세스를 죽인다. default 10

ServerLimit: 서버, 프로세스 수의 상한 값

MaxClients: 동시에 접속할 수 있는 클라이언트 수의 상한 값

MaxRequestsPerChild: 지정한 값만큼만 프로세스가 요청을 처리하고 값만큼 처리되면 프로세스를 종료하고 새로운 프로세스를 준비한다. 0으로 설정하면 무제한

 

Worker 방식

 

 

Worker 방식은 1 프로세스가 각각 여러 스레드를 사용하게 된다.

요청 하나에 프로세스가 생성되는게 아니라 스레드로 처리하기 때문에 메모리 등 리소스 사용량이 비교적 작게 된다.

다만 메모리 공간을 공유하는 부분이 생기니 충돌등이 발생할 수 있다.

 

Worker 설정

 

<IfModule mpm_worker_module>
StartServers               5
MinSpareThreads        256
MaxSpareThreads        512
ThreadLimit                4096
ThreadsPerChild          128
ServerLimit                 32
MaxClients                 4096
MaxRequestsPerChild   10000
</IfModule>

StartServers: 아파치 실행시 실행되는 프로세스 수

MinSpareThreads: 최소 스레드 개수, 스레드 풀의 개념으로 보임

MaxSpareThreads: 최대 스레드 개수

ThreadLimit: 프로세스당 스레드 수의 상한

ServerLimit: 프로세스 수의 상한

MaxClients: 동시에 접속 할 수 있는 클라이언트의 상한

 

'WS & WAS > apache' 카테고리의 다른 글

Apache, Tomcat 연동하기  (0) 2021.08.17