Apache / httpd 설치방법의 차이 (prefork, worker방식)
A. prefork, worker방식
[prefork 방식]
일반적으로 싱글 or 듀얼 cpu에서 성능이 좋다
실행중인 프로세스를 복체하여 실행한다(메모리 영역까지 복제)
프로세스가 소비하는 메모리가 많다
응답하는 프로세스를 미리 띄워놓고 클라이언트가 요청을 할때 자식 프로세스가 반응하게 되는 방식이다.
ex) 안정성과 오래된 소프트웨어와 호환성이 필요한 사이트는 preforking MPM을 사용한다.
--with-mpm=prefork(default)
[worker 방식]
여러 자식 프로세스가 각각 여러 쓰레드를 사용한다.
각 쓰레드는 한번에 한 열결을 담당한다
일반적으로 prefork보다 메모리를 덜 잡아먹는다
통신량이 많은 서버에 적절하다
--with-mpm=worker
Apache MPM 부터 설명하자면
MPM(multi-Processing Module):다중처리 모듈
apache 가 받아들인 요청을 처리하기 위해 "자식 Process"에게 분배하는 방식이다.
종류: 여러가지 종류가 있으나 대표적인 prefork 방식과 worker방식이 대표적이다
[차이점]
worker 방식이 preker 방식보다 적은 메모리를 사용한다.
worker 방식은 통신양이 많은 서버에 적절한 형태를 가진다
worker방식과 prefork방식의 속도는 비슷하다
prework 방식은 안전하지 않고 신회하지 않는 제 3자가 만든 모듈을 사용할수 있고
디버깅이 빈약한 플랫폼에 쉽게 디버깅을 할 수 있다.
apach maxClient : prework 256 까지 변경
worker는 하나의 쓰레드가 처리하는 엑세스 프로세스를 64개로 기본적으로 제한하고 수정할 수 있다.
이는 소스파일 경로에 server/mpm/prefork/prefork.c파일에 serverlimit을 늘러주는 것이다.
이는 디폴트는 256이나 max는 20000까지 지정해 줄 수 있다. 하지만. 기본적으로 컴파일 하기 전에 디폴트 값을 변경하지 않고 컴파일 하고 그 이상의 값을 조정하고 싶을 경우 바꿔주고 configuration 에서 지정하여 줄 수 있다.
worker도 prework처럼 바꿔주면 된다.