다중처리 모듈 (MPM) - Apache HTTP Server Version 2.2

Apache HTTP Server Version 2.2

Apache > HTTP Server > Documentation > Version 2.2

#### Please note

This document refers to a legacy release (2.2) of Apache httpd. The active release (2.4) is documented here. If you have not already upgraded, please follow this link for more information.

You may follow this link to go to the current version of this document.

# 다중처리 모듈 (MPM)

가능한 언어: de | en | es | fr | ja | ko | tr | zh-cn

이 문서는 최신판 번역이 아닙니다. 최근에 변경된 내용은 영어 문서를 참고하세요.

이 문서는 다중처리 모듈 (Multi-Processing Module)이 무엇이며, 아파치 웹서버가 이를 어떻게 사용하는지 설명한다.

- Comments

## 소개

아파치 웹서버는 다양한 환경의 다양한 플래폼에서 동작할 수 있도록 강력하고 유연하게 설계되었다. 다른 플래폼과 다른 환경은 보통 다른 기능을 요구하며, 어떤 기능을 가장 효율적으로 구현하는 방법이 다를 수 있다. 아파치는 모듈화된 설계로 이런 다양한 환경에 항상 적응해왔다. 그래서 웹마스터는 컴파일시 혹은 실행시 어떤 모듈을 읽어들일지 선택하여 서버에 포함할 기능을 결정할 수 있다.

Apache 2.0은 이런 모듈화된 설계를 웹서버의 가장 기본적인 부분에까지 확장했다. 서버는 시스템의 네트웍 포트에 연결하고, 요청을 받아들이며, 받아들인 요청을 처리하기위해 자식들에게 분배하는 다중처리 모듈 (Multi-Processing Modules, MPMs)을 선택할 수 있다.

서버를 이 정도로 모듈화하면 두가지 중요한 장점이 있다:

- `mpm_winnt`가 Apache 1.3에서 사용한 POSIX층 대신 자체 네트웍 기능을 사용할 수 있는 등, 아파치는 여러 다양한 운영체제를 더 깔끔하고 효율적으로 지원할 수 있다. 이 장점은 특화된 MPM을 구현한 다른 운영체제에도 적용된다.
- 서버는 특정 사이트의 요구조건에 더 특화될 수 있다. 예를 들어 높은 확장가능성(scalability)이 필요한 사이트는 `worker`와 같은 쓰레드 MPM을 사용하고, 안정성과 오래된 소프트웨어와의 호환성이 필요한 사이트는 `prefork`ing MPM 을 사용할 수 있다. 추가로 다른 사용자아이디로 여러 호스트를 서비스하는 것(`perchild`)과 같은 특별한 기능도 제공된다.

사용자가 보기에 MPM은 다른 아파치 모듈과 거의 비슷해 보인다. 주된 차이는 서버는 한번에 오직 한 MPM만을 사용해야 한다는 점이다. 사용가능한 MPM 목록은 모듈 목록 페이지에 있다.

## MPM 선택하기

MPMs는 구성중에 선택하여 서버에 컴파일되야 한다. 쓰레드를 사용하는 것을 컴파일러가 알면 많은 함수를 최적화할 수 있다. 유닉스에서 몇몇 MPM은 쓰레드를 쓰고 나머지는 아니므로, MPM이 구성중에 선택되어 아파치에 컴파일될때 아파치는 더 빠른 속도를 낸다.

원하는 MPM을 선택하려면 ./configure 스크립트에 with-mpm= NAME 아규먼트를 사용하라. NAME은 원하는 MPM 이름이다.

서버를 컴파일한후 `./httpd -l` 명령어로 선택한 MPM을 알 수 있다. 이 명령어는 MPM을 포함하여 서버에 컴파일된 모든 모듈을 알려준다.

## MPM 기본값

다음 표는 여러 운영체제의 기본 MPM을 보여준다. 컴파일시 다르게 선택하지 않으면 이 MPM이 선택된다.

BeOS | `beos`
Netware | `mpm_netware`
OS/2 | `mpmt_os2`
유닉스 | `prefork`
윈도우즈 | `mpm_winnt`

가능한 언어: de | en | es | fr | ja | ko | tr | zh-cn

## Comments

Notice:
This is not a Q&A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed again by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Freenode, or sent to our mailing lists.