아파치 최대 동시 접속자수(max_clients) 수정

리눅스/APACHE|2015. 1. 16. 16:31
반응형

1. 아파치 2.0.xx 버전

기본 동시접속자수는 최대 256명. 이를 더 많은 숫자로 변경하기 위해서는 아래 파일 수정 후 재펌파일이 필요하다.

/apache/../server/mpm/prefork/prefork.c 파일에서
#define DEFAULT_SERVER_LIMIT 256    // 원하는 최대 접속자를 입력한다.

위에서 숫자 부분을 적당하게 늘려주고

/apache/../server/mpm/worker/worker.c 파일에서
#define DEFAULT_SERVER_LIMIT 16    // 아래 계산법 참고

위에서 숫자 부분을 적당하게 늘려준다.

예를 들어 prefork.c 파일에서 1280으로 늘려주었다면, worker.c 파일은 20으로 늘려주는데, 그 이유는 아래와 같다.

worker 방식은 기본적으로 16개의 child process와 그 안에 64개의 thread를 생성가능하므로, 16*64 = 1024가 된다. 따라서 prefork.c 파일에서 1280으로 늘려주게 되면, worker.c는 1280/64 = 20이 되므로 20으로 수정해 줘야 똑같이 1280명의 동시접속자가 가능하게 된다.


-----------------------------------------------------------------------------

[참고]

1. prefork.c 파일과 worker.c 파일을 같이 늘려줘야 합니다.

 

2. worker 의 경우 아래와 같은 방법으로 수정합니다. (prefork 는 MaxClients 만 늘려주면 됩니다.)

 <IfModule worker.c>
StartServers         1024    // 기본값이 2 입니다.
MaxClients         65536    // 이처럼 최대 접속자를 높게 재설정할 경우 아래 계산법을 따릅니다.
ThreadsPerChild     64    // 프로세스당 쓰레드 수입니다. 기본값이 25 이며, 최대 64 까지 가능합니다.
</IfModule>

 

공식 : MaxClients / ThredsPerChild =< StartServers

           MaxClients 를 정하고 ThreadsPerChild 를 나누면 StartServers 값이 나옵니다.


- 내용추가 (글쓴이)

-----------------------------------------------------------------------------

 


2. 아파치 1.3.xx 버전

기본 동시접속자수는 최대 256명인데, 이는 MaxClients에 입력가능한 최대치를 말합니다.
256명 이상의 동시접속을 허용하고자 할 경우에는 아파치를 다시 재 컴파일해야 합니다.
아파치 디렉토리로 이동하여 ../src/include 안의 httpd.h 에서 다음과 같은 부분을 찾아
값을 높여 주시면 됩니다.

 

#define HARD_SERVER_LIMIT 512    // 원하는 최대 접속자를 입력한다.

 

위와같이 설정 한 후 http.h 파일을 재컴파일해야 정상적으로 적용이 됩니다.

만약 클라이언트가 512명 이상의 접속을 넘어서 이루어질 경우에는 다음과 같은 메시지가 
로그파일에 남게 되며, 클라이언 트는 다른 요청의 접속이 끝날 때 까지 대기하거나 
또는 특정시간이 지난 후 접속이 이루어질 수 없다는 메시지를 보여주게 된답니다 .

[error] server reached MaxClients setting, consider raising the MaxClients setting.


만약, 동시접속자 수를 기본 동시접속자 최대 수인 256명 미만으로 조정하고자 한다면,
재컴파일이 필요없이 아래 파일만 수정합니다.

../conf/httpd.conf 
MaxClients 150
 
그리고, 아파치를 리스타트 하면 됩니다. 
# apachectl restart


 

[출처] 내가사는이유 (http://kikook.tistory.com/492)

반응형

댓글()