apache thread를 늘리기 위해선 configure 하기 전에 옵션 값을 조정해 놓아야 한다.
apache 1.x 와 2.x는 다른 방식이며, 여기에서는 apache 2.x에 대해서 설명한다.
아파치 2.0은 용도에따라서 프로세스 모델을 정의해주어야 됩니다. (유닉스 계열은 컴파일시
--with-mpm={perchild|prefork|worker} 기본값은 아파치 1.3과 같은 prefork 모델입니다.
prefork 방식
아파치 1.3 은 포크 가능한 자식 프로세스는 기본값은 256개
apache_1.3.x/src/include/httpd.h 파일에서
#define HARD_SERVER_LIMIT 256
요것을 서버 스펙에 따라서 적당히 늘려줍니다.
아파치 2.0 은 역시 포크 가능한 자식 프로세스는 기본값은 256개
httpd2.x/server/mpm/prefork/prefork.c 를 열으셔서
#define DEFAULT_SERVER_LIMIT 256
역시 적당히 늘려줍니다.
worker 방식
기본으로 16개의 차일드 프로세스와 그안에 64개의 쓰레드를 생성가능하므로
16*64 = 1024 개의 쓰레드를 생성 할수있습니다.
httpd-2.x/server/mpm/worker/worker.c
기본적으로 생성가능한 차일드 프로세스수 조절
#define DEFAULT_SERVER_LIMIT 16
각 프로세스내에 생성 가능한 쓰레드 수 조절
#define DEFAULT_THREAD_LIMIT
64
perchild 방식
기본으로 8개의 차일드 프로세스와 그안에 64개의 쓰레드를 생성가능하므로
8*64 = 512 개의 쓰레드를 생성 할수있습니다.
httpd-2.0.35/server/mpm/perchild/perchild.c
기본적으로 생성가능한 차일드 프로세스수 조절
#define DEFAULT_SERVER_LIMIT 8
각 프로세스내에 생성 가능한 쓰레드 수 조절
#define DEFAULT_THREAD_LIMIT
64
각자의 서버 스펙에 맞추어서 적절히 조절하시면 됩니다.