Skip to content

조회 수 16955 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

1. 전제 조건

- apache 설치 시에 아래와 같이, 반드시  --with-mpm=worker 옵션을 설정 하고 설치한다.  

  이 옵션을 주지 않을 경우, Default인 Prefork방식으로 설치된다(Linux에 한함)

================================================================

./configure --prefix=/home/paint/apache-2.2.15 --enable-mods-shared=all --enable-module=so --enable-so  --with-mpm=worker

================================================================

 

* 현재 worker 모듈 설치 되었는지 확인법

- "httpd -l" 명령으로 현재 설치된 Apache가 worker방식으로 설치되었는지 확인할 수 있다.

============================================

# httpd -l

Compiled in modules:

  core.c

  worker.c

  http_core.c

  mod_so.c

============================================

 

또는, httpd -V 명령으로 확인 가능하다. (V는 대문자)

============================================

# httpd -V

Server version: Apache/2.2.15 (Unix)

Server built:   Jun 30 2010 16:59:45

Server's Module Magic Number: 20051115:24

Server loaded:  APR 1.4.2, APR-Util 1.3.9

Compiled using: APR 1.4.2, APR-Util 1.3.9

Architecture:   32-bit

Server MPM:     Worker

  threaded:     yes (fixed thread count)

    forked:     yes (variable process count)

Server compiled with....

 -D APACHE_MPM_DIR="server/mpm/worker"

 -D APR_HAS_SENDFILE

 -D APR_HAS_MMAP

 -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)

 -D APR_USE_SYSVSEM_SERIALIZE

 -D APR_USE_PTHREAD_SERIALIZE

 -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT

 -D APR_HAS_OTHER_CHILD

 -D AP_HAVE_RELIABLE_PIPED_LOGS

 -D DYNAMIC_MODULE_LIMIT=128

 -D HTTPD_ROOT="/home/paint/apache-2.2.15"

 -D SUEXEC_BIN="/home/paint/apache-2.2.15/bin/suexec"

 -D DEFAULT_SCOREBOARD="logs/apache_runtime_status"

 -D DEFAULT_ERRORLOG="logs/error_log"

 -D AP_TYPES_CONFIG_FILE="conf/mime.types"

 -D SERVER_CONFIG_FILE="conf/httpd.conf"

=============================================

 

 

2. 설정

 

1) httpd.conf 수정

- 아래와 같이. "Include conf/extra/httpd-mpm.conf" 설정의 주석을 제거한다.(기본적으로 주석처리 되어 있음)

===============================

...

# Server-pool management (MPM specific)

Include conf/extra/httpd-mpm.conf

...

===============================

 

2) httpd-mpm.conf 수정

- 경로 : $APACHE_HOME/conf/extra/httpd-mpm.conf

  * httpd.conf에서 설정한 경로를 따라간다.

    

============================  

<IfModule mpm_worker_module>

    ServerLimit                16        => 구성가능한 child 프로세스의 재한 수 

    StartServers                16        => 시작시에 초기화되는 서버 프로세스의 개수 (default : 3) / prefork default:5, mpmt_os2 default 2

    MaxClients                150        => 동시에 접속할 수 있는 Client의 상한, 즉 Precess 수 x Thread 수

    MinSpareThreads        25        => 새로운 방문자를 바로 처리하기 위하여 대기하고 있는 최소 쓰레드 개수

    MaxSpareThreads        75        => 새로운 방문자를 바로 처리하기 위하여 대기하고 있는 최대 쓰레드 개수(보통 ThreadsPerChild 값이랑 같게 설정)

    ThreadsPerChild        25        => 프로세스당 쓰레드 수(ThreadLimit와 거의 같은 의미)

    MaxRequestsPerChild   0        => 자식프로세스가 서비스할 수  있는 최대 요청 개수(0은 무한대), 

                                           오래된 프로세스들을 죽이고 새로운 프로세스를 시작하는 것에 의해 프로세스 리사이클 주기를 얼마나 할지 설정

</IfModule>

============================

 

* 프로세스 개수

Active Child Process의 최대 개수는 MaxClients 값과 ThreadsPerChild 값의 의해서 계산된다.

- 만약, MaxClients를 4096으로 하고, ThreadPerChild를 128로 하면

  MaxClients(4096) / ThreadPerChild(128) = 32 

  따라서 32개의 프로세스가 생성된다.

이 수치를 변경할 경우 Apache를 완전히 재시작 해야 함.  

 

 

 

3. 옵션 세부 설명

 

ServerLimit (default : 16)

- 구성 가능한 child 프로세스의 제한 수.

- 이 ServerLimit 값이 필요 이상 높게 설정 된다면, 쓸데 없이 미사용 공유 메모리가 할당 되므로 적절하게 설정 필요.

- MaxClient 와 ThreadPerChild 에서 요구한 프로세스 수보다 높게 설정하지 말 것.

 

StartServers (default : 3)

- Apache기동시에 띄울 프로세스 개수

- 자식 프로세스의 수는 부하에 따라 동적으로 변경되기 때문에 이 설정은 큰 의미가 없다.

 

MaxClient (default : ServerLimit x ThreadsPerChild)

- 동시에 처리될 최대 커넥션(request)의 수

- MaxClients 수치를 초과한 후 온 요청들은 ListenBackLog에 의해 큐잉됨

- ThreadsPerChild 옵션과 매우 긴밀하게 작용함

- 동접자가 많을 경우, 이 MaxClient값을 증가시켜야 함.

- OS의 FD(File Descriptor)값을 증가 시켜 MaxClient 의 상한값을 증가시키도록 할 것.

 

MinSpareThreads (default : 75)

- Request spike를 처리할 최소 idle 쓰레드 수 

- 만약 서버에 idle 쓰레드가 충분하지 않다면 child 프로세스는 idle 쓰레드가 MinSpareThreads 보다 커질때까지 생성된다.

     

MaxSpareThreads (default : 250)

- Idle 쓰레드의 최대 수 

- 만약 서버에 너무 많은 idle 쓰레드가 존재하면 child 프로세스는 idle 쓰레드가 MaxSpareThreads 수보다 작아질 때까지 죽는다.

     

ThreadsPerChild (default : 64)

- 각 child 프로세스가 생성한 쓰레드 수 

- Child 프로세스는 기동시 ThreadsPerChild 개수만큼 쓰레드를 생성하고 결코 더 이상 생성하지 않는다. 

- 만약 worker 방식의 MPM을 사용중이라면, 전체 쓰레드 수는 평상시 부하를 처리할 만큼 충분히 많아야만 한다.

     

MaxRequestsPerChild

- 각 각의 child 프로세스가 처리할 request의 수를 제한. 

- MaxRequestsPerChild 개수를 처리한 후, child 프로세스는 종료(die)된다. 

- 0으로 설정하면 무한대

- MaxRequestsPerChild 를 0 이외의 값으로 설정하는 것은 프로세스가 (혹시나) 메모리 누수로 사용할 수 있는 메모리 양을 제한한다.

 

ThreadLimit (default : 64)

- child 프로세스의 라이프주기 동안 ThreadsPerChild 의 최대 설정값을 설정한다.

- 이 지시자를 사용할 때는 특별한 주의가 필요하다. 

- ThreadLimit 가 ThreadsPerChild 보다 훨씬 높게 설정된다면, 여분의 미사용 공유 메모리가 할당될 것이다.

- ThreadLimit 과 ThreadsPerChild 모두 시스템이 다룰 수 있는 것 보다 높게 설정한다면, 아파치가 기동되지 않거나 시스템이 불안정하게 될 수 있다. 

- 이 지시자를 당신의 최대 예상 ThreadsPerChild 의 설정보다 높게 설정하지 마라.

 

 

4. 의문점

부모프로세스를 제외하고 자식 프로세스의 경우 설정값 보다 +1, 즉 1개가 더 생성된다. 

이 프로세스는 쓰레드를 소유하고 있지 않으며, 쓰레드를 소유하지 않기 때문에 요청조차도 받지 않는다.

이 프로세스는 왜 생성되는지.. 또한 어떠한 역할을 하는지는 의문점이다.

 

출처 : http://mcpaint.tistory.com/152


  1. No Image 13Aug
    by ADMINPLAY
    2012/08/13 by ADMINPLAY
    Views 17173 

    h264 스트리밍 서버 구축(리눅스,아파치) (실시간 아님, 그냥 서버에 있는 동영상 파일을 스트리밍 방식으로 쏴줌)

  2. No Image 16Jan
    by ADMINPLAY
    2012/01/16 by ADMINPLAY
    Views 16955 

    Apache Worker 방식의 이해 및 설정법

  3. No Image 07Oct
    by ADMINPLAY
    2008/10/07 by ADMINPLAY
    Views 16892 

    서비스 동시접속 인원알기

  4. No Image 03Jan
    by ADMINPLAY
    2009/01/03 by ADMINPLAY
    Views 16528 

    웹페이지에서 한글이 깨지는 현상 막기

  5. 아파치웹서버 모니터링하기

  6. 웹 사이트 속도측정

  7. Apache의 Indexes된 페이지에서 한글표시

  8. No Image 26Nov
    by ADMINPLAY
    2009/11/26 by ADMINPLAY
    Views 16069 

    apache2 worker 방식 client 수치 설정법

  9. No Image 08Oct
    by ADMINPLAY
    2008/10/08 by ADMINPLAY
    Views 16032 

    아파치 특정폴더에 암호걸기

  10. No Image 08Oct
    by ADMINPLAY
    2008/10/08 by ADMINPLAY
    Views 15933 

    사이트가 느려지는 현상 점검

  11. No Image 10Dec
    by ADMINPLAY
    2008/12/10 by ADMINPLAY
    Views 15905 

    아파치 모듈 내용

  12. No Image 11Nov
    by ADMINPLAY
    2008/11/11 by ADMINPLAY
    Views 15769 

    Apache 최적화

  13. No Image 18Jul
    by ADMINPLAY
    2009/07/18 by ADMINPLAY
    Views 15668 

    매일 자정에 트래픽 초기화 하기

  14. No Image 03Apr
    by ADMINPLAY
    2009/04/03 by ADMINPLAY
    Views 15592 

    아파치 웹서버 사용 시 무단 링크 방지법

  15. No Image 07Oct
    by ADMINPLAY
    2008/10/07 by ADMINPLAY
    Views 15507 

    64bit 시스템에 ssl 설치 후 실행 시 X509_free 오류

  16. No Image 23Jan
    by ADMINPLAY
    2009/01/23 by ADMINPLAY
    Views 15435 

    RedirectMatch (도메인포워딩)

  17. No Image 23Dec
    by ADMINPLAY
    2008/12/23 by ADMINPLAY
    Views 15428 

    Apache 버전확인

  18. No Image 17Mar
    by ADMINPLAY
    2009/03/17 by ADMINPLAY
    Views 15350 

    초간단 웹 페이지 로딩시간 체크법

  19. 리눅스 APM 소스설치시 에러에 대한 대처

  20. No Image 26Nov
    by ADMINPLAY
    2009/11/26 by ADMINPLAY
    Views 14874 

    아파치 데몬이 안 뜰경우

Board Pagination Prev 1 2 3 4 5 Next
/ 5

Copyright ADMINPLAY corp. All rights reserved.

abcXYZ, 세종대왕,1234

abcXYZ, 세종대왕,1234