본문 바로가기
프로그램개발/Linux(Apache.vim)

Apache MPM 참고

by 크레도스 2014. 1. 14.

* MPM : Multi-Processing Module
 => apache 가 받아들인 요청을 처리하기 위해 "자식 process" 에게 분배하는 방식

* 종류 : 여러가지 종류가 있으나 대표적인 prefork 방식과 Worker 방식만 소개 하겠습니다.
  1) Prefork
    실행중인 프로세스 복제하여 실행 ( 메모리 영역까지 같이 복제)
    프로세스가 소비하는 메모리가 많음.
  2) Worker
    요청을 thread 단위로 처리 ( 최대 64개의 thread 처리 가능 )

* Prefork 방식과 Worker 방식의 차이점
  1) Worker가 Prefork에 비해 적은 메모리 사용
  2) Worker : 통신량이 많은 서버에 적절한 형태
  3) Prefork : 안전하지 않은 제 3자가 만든 모듈 사용가능
  4) Prefork : 디버깅이 빈약한 플랫폼에서 쉬운 디버깅 가능
  5) apache MaxClient : Prefork 방식일 경우 최대 256 까지 변경 가능

* 최근의 추세
  성능에 주안점을 둔 worker 방식으로 많이 설치

* 참고사항
  Maxclient 를 늘리기 위한 설정 ( Prefork 방식일 경우 )
  1) apache 1.x 버전
    Apache 소스 디렉토리/src/include/httpd.h 파일을 편집기로 open
    define HARD_SERVER_LIMIT 256  => 512 혹은 1024 등으로 변경 저장후 컴파일

  2) apache 2.x~ 2.2.x 버전
    apache소스디렉토리/server/mpm/prefork/prefork.c 파일을 편집기로 open
    define DEFAULT_SERVER_LIMIT 256 => 512 혹은 1024 등으로 변경

  Maxclient 를 늘리기 위한 설정 ( Worker 방식일 경우 - 2.x버전에 한정됨)
  1) Maxclient 는  StartServers * ThreadsPerChild 로 정해짐
      ( MaxClient = StartServer * ThreadsPerChild )
    => worker 방식은 각각의 자식프로세스별로 여러개의 thread를 생성해서 요청을
          처리하기 때문
  2) Maxclient 를 늘리기 위한 설정
    apache소스디렉토리/server/mpm/worker/worker.c 파일 을 수정
    ( define DEFAULT_SERVER_LIMIT 16 을 변경 )