Apache max client 확인 방법

아파치 동시 접속자수는 httpd.conf 파일에서 그 값을 지정할 수 있다.

다만 컴파일시 지정하는 “ServerLimit” 값 이상은 그 값이 늘어나지 않으며 확인 결과 apache 2.2.x 버전의 “ServerLimit” 는 DEFAULT = 256 , MAX = 20000 으로 지정되어 있다.

동시 접속자 수 2000은 충분이 큰 값이며 굳이 컴파일 설치를 통하여 “ServerLimit” 값을 늘려 줄 필요는 거의 없으며 간단히 RPM 설치해도 무방할 듯 하다.

설치 후 httpd.conf 옵션값 조정만으로 충분할 것으로 판단된다

환경

  • Linux CentOS 5.6
  • apache 2.2.19 MPM(다중처리 모듈)은 Prefork 방식
  • MPM
    • prefork 방식 - 프로세스:쓰레드 = 1:1
    • Worker 방식 - 프로세스:쓰레드 = 1:n

“ServerLimit” 값 조정 방법

  • 아파치 컴파일된 현재 셋팅값 조회해 보고

    [apache@ ~]# /usr/local/apache/bin/apachectl -V	
    

  • 변경하고자 할 경우 Httpd.conf 에서 /conf/extra/httpd-mpm.conf 을 Include 처리 (리마크 제외) 하고

    # 다음 라인 리마크 해제
    Include conf/extra/httpd-mpm.conf
    

  • Httpd-mpm.conf 파일을 열고 지시자 변경한다. 다음은 동시접속자를 “1024” 로 지정한 예제이다.

    〈IfModule mpm_prefork_module〉
      ServerLimit         1024
      StartServers          5
      MinSpareServers       5
      MaxSpareServers      10
      MaxClients          1024
      MaxRequestsPerChild   0
    〈IfModule〉
    

  • 지시자

    • MinSpareServers, MaxSpareServers

      부하가 적어서 MinSpareServers 개수 보다 적었을 경우 최소한 이 개수 만큼 유지하려고 아파치가 노력하고 부하가 증가하여 프로세스 개수가 많아질 경우에 MaxSpareServers 개수 이하로 줄이려고 아파치는 노력한다. 즉, 절대적인 수치가 아니다.

    • StartServer

      아파치 구동시 프로세스 개수

    • MaxClients

      실행가능한 최대 프로세스 개수

    • MaxRequestsPerChild

      클라이언트들의 요청 개수를 제한. 만약 자식 프로세스가 이 값만큼의 클라이언트 요청을 받았다면 이 자식 프로세스는 자동으로 죽게 된다. 0 일 경우엔 무한대

ServerLimit 에 대한 오해

구글링을 하다 보면 “ServerLimit” 를 올리려면 컴파일을 다시 해주어야 한다는 내용을 많이 찾아 볼 수 있으며 아파치 1.3.x 버전 내용인지 2.2.x 버전 내용인지를 명시 하지 않아 혼란을 야기한다.

위에서 정의 한 것 처럼 아파치 2.2.x 버전은 기본 컴파일된 Max Server Limit 값은 충분히 큰 값(=20000)이며 필요 동시 사용자수가 limit 값을 넘지 않는다면 conf 조정하여 늘려 사용하면 된다.

posted at 2014/02/19 14:25

Apache max client 확인 방법

apache 튜닝

prefork & worker 방식에 따른 MaxClient 적용방법

안녕하세요.

'와스고수" 입니다.                                                                                 "와스고수"

apache 에서 MaxClient 를 증가해서 사용할 경우가 많습니다.

사용량이 많을때나, 아니면 부하테스트를 할때... MaxClient 의 값을 조절하는데요.

그럴때 apache 에서는 두가지 방식으로 ./configure 을 수행합니다.

defailt... 값은 ./configure 할때 아무것도 안넣어 주면 profork 방식으로 진행이 됩니다.

허나 cpu가 많고 서버사양이 좋으면 보통.. worker 방식을 선호하긴 합니다.

이번에 알려드리는 방법은 profork 방식일때 MaxClient 를 조절하는 방법과 worker방식일때 조절하는 방법에 대해 정리해 드리겠습니다.

profork 일경우와 worker 경우일때 적용방법의 차이가 있으며 apache 의 default 설정값은 prefork입니다.

worker 방식을 사용하고자 할경우 ./configure 수행시 --with-mpm=worker 옵션 삽입하면 됩니다.

1번... 자신의 apache 가 prefork 방식인지 worker 방식인지 확인하는 방법

위 처럼 설정을 하시고 /bin/ ./httpd -V 로 확인해보시면 아래의 사향이 나옵니다.

[preorderweb5:/apache/apache-2.2.21/bin]# ./httpd -V

Server version: Apache/2.2.21 (Unix)

Server built:   Jul 24 2012 15:29:14

Server's Module Magic Number: 20051115:30

Server loaded:  APR 1.4.5, APR-Util 1.3.12

Compiled using: APR 1.4.5, APR-Util 1.3.12

Architecture:   64-bit

Server MPM:     Prefork

  threaded:     no

    forked:     yes (variable process count)

Server compiled with....

 -D APACHE_MPM_DIR="server/mpm/prefork"                     <-- 이걸로 자신의 apache 의 설정값 확인가능.

... 생략

1) prefork 방식 (안전성이 뛰어남)

자식프로세스   <--->  스레드

자식프로세스   <--->  스레드

자식프로세스   <--->  스레드

2) worker 방식 (다중방식으로 처리가 가능)

                       <--- 스레드 (1)

자식프로세스     <--- 스레드 (2)

                       <--- 스레드 (3)

###########################

 (DEFAULT_SERVER_LIMIT 설정)

###########################

경로 : /server/mpm/prefork/prefork.c 

파일 : prefork.c 

#define DEFAULT_SERVER_LIMIT 256 <-- 1024 or 2048로 변경

경로 : server/mpm/worker/worker.c

파일 : worker.c

#define DEFAULT_SERVER_LIMIT 16 <-- 128 로 변경

(server/mpm/prefork/prefork.c 의 SERVER_LIMIT 값을 1024로 변경한경우)

#define DEFAULT_SERVER_LIMIT 16 <-- 256 로 변경

(server/mpm/prefork/prefork.c 의 SERVER_LIMIT 값을 2048로 변경한경우)

###############

 (MaxClient 설정)

###############

아파치 컴파일

1) /conf/httpd.conf 

Include conf/extra/httpd-mpm.conf

2) /conf/extra/httpd-mem.conf 파일 수정

=> prefork 일때 ..

<IfModule mpm_prefork_module>

    StartServers         16

    MinSpareServers      256

    MaxSpareServers      1024

    MaxClients          2048

    MaxRequestsPerChild   0

</IfModule>

=> worker 일때 .. (MaxClients  2048 ~ 4096 지원가능)

<IfModule mpm_worker_module>

    StartServers          16

    MaxClients          2048

    MinSpareThreads      256

    MaxSpareThreads      1024

    ThreadsPerChild      64

    MaxRequestsPerChild   0

</IfModule>

## 2013-12-16 내용 추가 ##

apache-2.2.x버전 부터는 DEFAULT_SERVER_LIMIT 128~ 2000 이 적용되있어서 2000 이내일경우 새로 컴파일 하지 않아도 됩니다.

일반적으로 MaxClient = ServerLimit 값을 동일하게 설정하는데.. 2000까지는 그냥 적용해도 인식됩니다.

MinSpareThreads=75   // default 값

MaxSpareThreads=250   // default 값

위 처럼 수정하신뒤 ./apachectl restart 하실때 에러없이 기동되면 정상적으로 설정이 된것입니다.

.. 하다 잘 모르시면 답글남겨주세요..^^ 확인후 답신해드릴께요.

그럼 부더운 여름날.... 아 덥다..~~ 열공하세요.