http://cafe.naver.com/q69/114522

아파치 동접자 제어


 


  • worker MPM은 여러 자식 프로세스가 각각 여러 쓰레드를 사용한다. 각 쓰레드는 한번에 한 연결을 담당한다. 일반적으로 worker는 prefork MPM 보다 적은 메모리를 사용하므로 통신량이 많은 서버에 적절하다.

    즉 동접자의 계산은 기본 프로세스가 16이고 Thread가 64일 경우


    16 * 64 = 1024(동접자)


     


       - 1.x.x 버전에서는 어디서 하는지 모르겠음


     


        -  2.x.x 버전일 경우


          아파치소스 2.x.x/server/mpm/worker/worker.c 에 있는


          #define DEFAULT_SERVER_LIMIT 16


          #define DEFAULT_THREAD_LIMIT 16


          여기서 16 -> 64로 하면 동접자 1024까지가 가능하다.


          위와 같이 소스 수정후 컴파일을 하고 나서 다시


          아파치설치폴더/conf/httpd.conf 의


          <IfModule worker.c>
          StartServers         2
          MaxClients         150
          MinSpareThreads     25
          MaxSpareThreads     75
          ThreadsPerChild       25
          MaxRequestsPerChild  0
          </IfModule>


          Max Clients 라고 씌여진 비슷한 부분을 1024로 바꾸고


          ThreadsPerChild 역시 64로 바꾸어 주면 되겠죠?


          아닌가? 아니면 말구 


     


     


     


     


  • prefork MPM은 쓰레드가 한개인 자식 프로세스를 여러개 사용한다. 각 프로세스는 한번에 한 연결을 담당한다. 여러 시스템에서 prefork의 속도는 worker와 비슷하지만, 더 많은 메모리를 사용한다. 다음과 같은 상황에서 쓰레드를 사용하지 않는 prefork 방식이 worker에 비해 이점을 가진다: 쓰레드에 안전하지 (thread-safe) 않은 제삼자가 만든 모듈을 사용할 수 있고, 쓰레드 디버깅 지원이 빈약한 플래폼에서 쉽게 디버깅할 수 있다.

     


      -  1.x.x 버전일 경우


          아파치소스 1.x.x/src/include/httpd.h 에 있는


          #define HARD_SERVER_LIMIT 256


          여기서 256 -> 1024로 하면 동접자 1024까지가 가능하다.


          위와 같이 소스 수정후 컴파일을 하고 나서 다시


           아파치설치폴더/conf/httpd.conf 의


           Max Clients 라고 씌여진 비슷한 부분을 1024로 바꾸면 된다.


     


      -  2.x.x 버전일 경우


          아파치소스 2.x.x/server/mpm/prefork/prefork.c 에 있는


          #define DEFAULT_SERVER_LIMIT 256


          여기서 256 -> 1024로 하면 동접자 1024까지가 가능하다.


          위와 같이 소스 수정후 컴파일을 하고 나서 다시


          아파치설치폴더/conf/httpd.conf 의


          <IfModule prefork.c>
           StartServers         5
           MinSpareServers      5
           MaxSpareServers     10
           MaxClients         150
           MaxRequestsPerChild  0
           </IfModule>


          Max Clients 라고 씌여진 비슷한 부분을 1024로 바꾸면 된다.