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. apache2 worker 방식 client 수치 설정법

    Date2009.11.26 ByADMINPLAY Views16069
    Read More
  2. Apache의 Indexes된 페이지에서 한글표시

    Date2009.05.07 ByADMINPLAY Views16291
    Read More
  3. 웹 사이트 속도측정

    Date2009.03.04 ByADMINPLAY Views16462
    Read More
  4. 아파치웹서버 모니터링하기

    Date2009.03.17 ByADMINPLAY Views16476
    Read More
  5. 웹페이지에서 한글이 깨지는 현상 막기

    Date2009.01.03 ByADMINPLAY Views16528
    Read More
  6. 서비스 동시접속 인원알기

    Date2008.10.07 ByADMINPLAY Views16892
    Read More
  7. Apache Worker 방식의 이해 및 설정법

    Date2012.01.16 ByADMINPLAY Views16955
    Read More
  8. h264 스트리밍 서버 구축(리눅스,아파치) (실시간 아님, ...

    Date2012.08.13 ByADMINPLAY Views17176
    Read More
  9. 아파치에서 한글 파일 읽기 [mod_url 설치]

    Date2009.03.17 ByADMINPLAY Views17297
    Read More
  10. apache가 worker 모드인지 prefork 모드로 동작하는지 확인

    Date2013.01.21 Byl2zeo Views17469
    Read More
  11. (간단한 팁) 우분투에 Apache2 설치하기 ( apt-get )

    Date2012.04.01 By로키 Views17605
    Read More
  12. Apache Make시 /usr/lib/libexpat.so: could not read sym...

    Date2009.08.07 ByADMINPLAY Views17943
    Read More
  13. squid 로 웹서버 가속하기..---== 강추 ==---

    Date2009.11.26 ByADMINPLAY Views18254
    Read More
  14. xcache 설치 (xcache-1.2.2.tar.gz)

    Date2009.03.17 ByADMINPLAY Views18362
    Read More
  15. 아파치 GeoIP를 이용한 국가별 제한

    Date2010.01.30 ByADMINPLAY Views18787
    Read More
  16. Apache - 도메인 포워딩

    Date2010.08.26 ByADMINPLAY Views18807
    Read More
  17. 웹방화벽 ModSecurity 룰적용 순서

    Date2010.05.29 Byl2zeo Views18916
    Read More
  18. 아파치(apache) 무단 링크 방지

    Date2011.06.18 ByADMINPLAY Views18977
    Read More
  19. 아파치 2.X 버전에서 mod_cband를 이용한 트래픽관리

    Date2009.01.17 ByADMINPLAY Views19027
    Read More
  20. mod_gzip, mod_deflate

    Date2010.07.29 ByADMINPLAY Views19117
    Read More
Board Pagination Prev 1 2 3 4 5 Next
/ 5

Copyright ADMINPLAY corp. All rights reserved.

abcXYZ, 세종대왕,1234

abcXYZ, 세종대왕,1234