- 안정버전인 2.2 버전을 이용하며, 특성상 하나의 클라이언트에 대해 하나의 프로세스를 할당하는 Prefork 방식 보다는 하나의 클라이언트를 하나의 쓰레드로 처리하는 Worker 방식이 효율적이다
- Apache 동작 방식 변경 /etc/sysconfig/httpd 에서 HTTPD=/usr/sbin/httpd.worker 로 수정 후 apache -l 명령어로 동작 모드 확인 - httpd.conf 수정 MaxClients 와 ThreadsPerChild 값 수정을 통한 최대 프로세스 및 쓰레드의 설정 Worker 방식의 경우 여러 자식 프로세스를 실행시키고, 각각의 프로세스 내에 여러 쓰레드를 생성 하여 "프로세스 수 X 프로세스 당 쓰레드의 수" 만큼의 처리를 하게 된다.
이때 자식 프로세스의 스레드 수를 제어하는 것이 바로 ThreadPerChild 값 이며, 자식 프로세스의 최대 값은 MaxCilents / ThreadsPerChild 값이다.
최대 프로세스 수 : 6 (MaxClients / ThreadsPerChild) 1개의 프로세스 당 최대 쓰레드 수 : 25 (ThreadsPerChild) 동시에 처리 가능한 클라이언트의 수 : 6 X 25 = 150 이후 프로세스/스레드의 최대 생성수를 늘이게 하려면 ServerLimit 와 ThreadLimit 설정값을 넣어준다. ServerLimit 는 16, ThreadLimit 는 64로 기본값을 넣어준다. 두 값을 수정하여 더 늘이면 된다.
▶ MaxClients,ThreadsPerChild 와 ServerLimit/ThteadLimit - MaxClients 와 ThreadsPerChild 는 서버의 동적인 리소스 에 관련된 설정 값이다. 이 값이 높거 나 낮아도 서버가 최소한 소모되는 리소스에는 영향을 주지 않는다,
- 그러나 ServerLimit/ThreadLimit 는 Apache 에서 확보하는 공유 메모리의 크기에 영향을 주며 , 이 값에 필요 이상으로 높은 값을 설정하게 되면 그 만큼 Apache 는 비 효율적인 공유 메모리를 소모한다.
- 그러므로 프로세스/쓰레드 수의 상한선이 내장된 값인 ServerLimit 16, ThreadLimit 64를 초과 할 경우에만 그 값에 맞게 설정하면 된다.
- 하지만 프로세스/쓰레드 당 메모리 사용량은 내장된 모듈 등에 의존하게 되는데 OS가 Apaache 에 메모리를 얼마나 할당할지는 각각의 서버 환경에 따라 달라지므로 설정값을 정하는데에는 한계 가 있다.
- 실제로 사용중인 환경에서 어느 정도로 설정해야 될지 모른다면 프로세스/쓰레드 당 메모리의 사용량 또는 아래의 조건 등을 확인해서 설정해야 한다.
- OS 나 웹 서버 이외의 S/W 가 이용하는 메모리 량
- 웹 서버의 프로세스/쓰레드 수가 최대수에 이르렀 을때 서버가 소비하는 합계 메모리 량
- 특정 웹 서버상에서의 최대 프로세스/쓰레드 수는 리소스가 어느정도 소모됬을때 스왑이 발생되지 않을정도로 튜닝하는 것이 적당하다.