Apache MPM Module: Prefork, Worker, Event 3가지 방식 비교 및 Event Module 최적화 설정

공정위 광고 문구 Ver 3.1
공정위 광고 문구 Ver 3.2(모바일 전용)

Apache MPM Module은 Apache HTTP Server의 중요한 부분으로, 서버의 요청 처리 방식을 결정합니다. MPM(Multi-Processing Module)은 서버의 성능과 확장성에 큰 영향을 미치는 역할을 합니다.

✅ MPM Module(Multi-Processing Module)

MPM 모듈은 서버가 요청을 처리하는 방식을 정의하며, 서버의 성능, 안정성, 확장성에 영향을 미칩니다. 주요 MPM 모듈로는 Prefork, Worker, Event가 있습니다. 확장성과 성능이 중요한 사이트는 Worker MPM을 선택하는 것이 일반적이며, 안정성과 오래된 소프트웨어와의 호환성이 중요한 사이트는 Prefork MPM을 사용하는 것이 보편적입니다.

Apache 2.4.x Version부터 Event 방식의 MPM Module이 추가 되었으며 Event MPM은 Worker MPM과 유사한 다중 프로세스, 다중 스레드 방식을 사용하지만, 추가적으로 이벤트 기반 메커니즘을 통해 keep-alive 연결을 더욱 효율적으로 관리합니다.

Keep-alive 연결은 HTTP/1.1에서 도입된 기능으로, 클라이언트와 서버 간의 연결을 유지함으로써 여러 요청을 하나의 연결에서 처리할 수 있도록 합니다. 이를 통해 각 요청마다 새로운 연결을 설정하고 해제하는 오버헤드를 줄여 성능을 향상 시킬 수 있습니다.
~]# pwd
/etc/httpd/modules
[root@ip-172-26-6-43 modules]# ll mod_mpm_*
-rwxr-xr-x. 1 root root 77696 Apr  3 09:50 mod_mpm_event.so
-rwxr-xr-x. 1 root root 40384 Apr  3 09:50 mod_mpm_prefork.so
-rwxr-xr-x. 1 root root 52736 Apr  3 09:50 mod_mpm_worker.so

✅ Prefork, Worker, Event 비교표

✅ Apache Event Module 확인 및 최적화 설정

워드프레스와 같은 웹사이트를 관리할 때 블로그 중심의 웹 사이트라면, 블로그 포스트 작성, 댓글 기능, 최신 글 목록, 글 업데이트 시 카테고리 업데이트 등이 동적인 요소에 속하며, 포스트의 개별 페이지, 소개 페이지, 연락처 페이지 등 자주 변경되지 않는 페이지들을 정적인 요소로 볼 수 있습니다.

이미 작성된 포스트가 수정되지 않는다면 정적인 요소가 더 크게 작용할 수 있으며, 플러그인 및 테마 업데이트와 같은 동적인 요소 및 서버에 설치된 캐시 등을 고려해서 Module Module은 Event Module 설정을 결정하게 되었습니다.

🔲 Apache Module 확인

현재 사용하는 서버의 모듈 확인 시 기본 모듈이 Event인 것을 확인했습니다.

modules]# ll mod_mpm_*
-rwxr-xr-x. 1 root root 77696 Apr  3 09:50 mod_mpm_event.so
-rwxr-xr-x. 1 root root 40384 Apr  3 09:50 mod_mpm_prefork.so
-rwxr-xr-x. 1 root root 52736 Apr  3 09:50 mod_mpm_worker.so

modules]# httpd  -V | grep MPM
Server MPM:     event
modules]# vi /etc/httpd/conf.modules.d/00-mpm.conf
# Select the MPM module which should be used by uncommenting exactly
# one of the following LoadModule lines.  See the httpd.conf(5) man
# page for more information on changing the MPM.

# prefork MPM: Implements a non-threaded, pre-forking web server
# See: http://httpd.apache.org/docs/2.4/mod/prefork.html
#
# NOTE: If enabling prefork, the httpd_graceful_shutdown SELinux
# boolean should be enabled, to allow graceful stop/shutdown.
#
#LoadModule mpm_prefork_module modules/mod_mpm_prefork.so

# worker MPM: Multi-Processing Module implementing a hybrid
# multi-threaded multi-process web server
# See: http://httpd.apache.org/docs/2.4/mod/worker.html
#
#LoadModule mpm_worker_module modules/mod_mpm_worker.so

# event MPM: A variant of the worker MPM with the goal of consuming
# threads only for connections with active processing
# See: http://httpd.apache.org/docs/2.4/mod/event.html
#
LoadModule mpm_event_module modules/mod_mpm_event.so

🔲 Event Module 최적화 설정

###############################################
## MPM-Module Event 및KeepAlive 설정 ##
<IfModule mpm_event_module>
    StartServers             2
    MinSpareThreads         25
    MaxSpareThreads         75
    ThreadsPerChild         25
    MaxRequestWorkers      150
    MaxConnectionsPerChild   0
</IfModule>

# KeepAlive settings
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5

# Timeout settings
Timeout 60
###############################################

🔲 Error_log에서 정상 작동하는지 확인해 보기

/var/log/httpd/error_log를 통해 정상 작동하는지 확인해 볼 수 있습니다.

[mpm_event:notice] [pid 728138:tid 728138] AH00492: caught SIGWINCH, shutting down gracefully
# Apache 서버가 SIGWINCH 신호를 받아 부드럽게 종료되었다는 것을 의미합니다. 이는 서버가 재시작 되었음을 의미 #
[Mon Aug 05 09:34:32.856097 2024] [suexec:notice] [pid 808397:tid 808397] AH01232: suEXEC mechanism enabled (wrapper: /usr/sbin/       suexec)
# suEXEC 메커니즘이 활성화되었음을 나타냅니다. suEXEC는 Apache에서 CGI 스크립트나 다른 실행 파일을 지정된 사용자 권한으로 실행하는 기능 #
[Mon Aug 05 09:34:32.887027 2024] [lbmethod_heartbeat:notice] [pid 808397:tid 808397] AH02282: No slotmem from mod_heartmonitor
# mod_heartmonitor 모듈에서 slotmem을 찾지 못했다는 경고입니다. 이는 로드 밸런싱 모듈과 관련된 메시지로, 실제로 문제가 되지 않는 경우가 대부분임 # 
[Mon Aug 05 09:34:32.893961 2024] [mpm_event:notice] [pid 808397:tid 808397] AH00489: Apache/2.4.57 (AlmaLinux) OpenSSL/3.0.7 co       nfigured -- resuming normal operations
# Apache 서버가 event MPM으로 구성되어 있으며, OpenSSL 3.0.7을 사용하고 있음을 나타냅니다. 서버가 정상적으로 작동을 시작했음을 의미함 # 

🔲 이전에 적용한 http2 모듈 작동 안됨.

예전 설정이 [Protocols h2 h2c http/1.1] 였는데 h2c 삭제 처리를 진행했습니다. 비보안 연결(HTTP)에서의 HTTP/2 연결이었는데 Apache 설정이 자동으로 보안 연결로 되도록 설정이 되어 있어 이 상태로 설정을 유지하는 걸로 마무리 했습니다.

# http2 module setting #
<IfModule http2_module>
ProtocolsHonorOrder On
Protocols h2 http/1.1
</IfModule>
리눅스(Linux)

ℹ️ 제휴 안내
본 사이트의 콘텐츠에는 제휴 링크가 포함되어 있습니다. 방문자가 이 링크를 통해 상품 또는 서비스를 구매하면 본 사이트는 판매처로부터 수수료를 지급받습니다. 이 과정에서 구매자가 지불하는 금액(이벤트 할인 시 금액이 내려갑니다↓)은 오르지 않습니다. 게시된 가격·할인·재고 정보는 작성 시점 기준이며 실제와 다를 수 있으므로, 구매 전 판매처에서 최종 확인하시기 바랍니다. 상품 선정과 평가는 자체 기준에 따라 작성되며, 수수료 지급 여부가 소개 순서나 평가 내용에 영향을 주지 않습니다.

Similar Posts

  • 리눅스 톰캣 설치

    리눅스 톰캣 설치(Ver 9.0.83)를 진행해 보겠습니다. 1. wget 설치 먼저 레드헷 계열에서 사용하는 패키지 매니저인 yum으로 wget 설치를 진행합니다. wget은 웹 서버로부터 컨텐츠를 가져오는 프로그램입니다. 2. 리눅스 톰캣 설치하기: Apach Tomcat ▼ Apach Tomcat 사이트에 접속합니다. 9 버전을 설치하기 위해 ‘링크 주소 복사’ 버튼을 눌러 줍니다. /usr/local/ 폴더에 설치를 진행할 것이며, 폴더는 원하는…

  • iptables 개념과 설치 | iptables 명령어

    iptables는 netfilter.org에서  C언어로 만들어진 패킷 필터링이며 무료 방화벽 서비스입니다. 리눅스 방화벽의 기본 정책은 필요한 것을 제외한 모든 패킷에 대해 거부하는 것이 방화벽의 기본 정책입니다. 기본 설치 명령어는 다음과 같습니다. 기본 룰 설정 옵션은 다음과 같습니다. Ⅰ. iptables 용어와 기본 iptables에서는 체인[Chain]이라고 불리는 규칙[Rule]으로 패킷 필터링[Packet Filtering]을 하며, 패킷[Packet]에 대해 허용할 것인지 거부할 것인지를…

  • |

    컴파일 뜻 : 컴파일링이란?

    ■ 컴파일이란? 컴파일(compile)이란 프로그래머가 작성한 소스코드를 바이너리 파일로 변환하는 과정이다. 소스코드를 Compiler 하여 프로그램을 만들 수 있다. 요즘은 배포판 공급업체에서 이미 compile 된 바이너리 파일들을 저장소에 관리하는 것이 일반적인 사항이 되었으며, 서버로 다운로드 후 바로 사용할 수 있다. Ⅰ. 컴파일링과 링킹 compile 과정을 컴파일링(compiling)이라고 하며, 소스코드(사람일 읽을 수 있는 형태의 프로그램)를 컴퓨터 프로세서의…

  • Apache http2 적용하기(mod_http2)

    리눅스 서버에 Apache를 설치하게 되면, 기본 프로토콜은 HTTP/1.1을 기본으로 통신하게 되어 있다. Apache http2는 Apache 2.4.17 버전 부터 DSO 모듈로(mod_http2.so) HTTP/2를 지원한다. HTTP/2(Hypertext Transfer Protocol Version 2)는 월드 와이드 웹에서 쓰이는 HTTP 프로토콜의 두 번째 버전이다. Apache http2 적용 http2 적용 확인하기 크롬 개발자 도구에서 프로토콜을 확인하면 [h2]로 적용된 걸 확인할 수 있다….

  • du 명령어: 파일 디스크 용량 확인

    du 명령어는 disk usage의 줄임말로 파일과 디렉토리의 사용량을 확인할 때 사용하는 명령어입니다. ✅ du 명령어 기본 사용 방법 경로 없이 실행 시 현재 디렉토리(.) 및 하위 k 바이트 단위로 표시됩니다. ✅ du 명령어 옵션 ✅ du 명령어 사용 예시 🔲 디릭토리 + 파일 출력: -a 기본 사용 시 디렉토리만 출력되며, -a 옵션 사용…

  • yum-config-manager 명령어 | YUM 저장소 설정

    yum 명령어는 기본 사용 시 기본 저장소(보통 안정화 버전)에서 패키지를 설치합니다. 저장소 파일을 추가하면 안정화(stable) 또는 최신(mainline) 버전 중 활성화된 저장소에서 패키지를 설치할 수 있습니다. 안정화와 최신 버전 저장소가 모두 활성화되어 있을 경우, yum은 버전이 더 높은 패키지(보통 최신 버전)를 설치합니다. 원하는 버전을 설치하려면, remi 저장소 설정 또는 yum-config-manager를 사용하여 특정 저장소를 활성화해서…

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

Prove your humanity: 10   +   1   =