Apache 2.4 처리방식 변경하기.(MPM, worker, prefork, Event-Driven)

아파치 서버에서 MPM(Multi-Processing Moudules)이란

  • 클라이언트에서 받아들인 요청을 처리하기 위해서 자식 프로세스들에게 분배하는 모듈이다.

아파치가 2.4.x 버전 이전에는 prefork 와 worker MPM방식이 존재했는데 특징은 다음과 같다.

prefork (다중 프로세스 처리)
– 하나의 자식 프로세스가 하나의 스레드를 갖는 구조, 자식프로세스는 최대 1024개 까지 가능.
– 스레드간 메모리 공유 안 함(안정적이나 메모리 사용량이 큼)
– 실행중인 프로세스를 복제하여 실행(메모리 포함)
– 응답 프로세스를 미리 띄워놓고 클라이언트 요청 시 프로세스가 반응하게 되는 형식
– 1 코어 or Dual 코어에서 성능이 좋다.

worker(멀티 프로세스 — 스레드 방식)
– prefork보다 메모리 사용량이 적다.
– 통신량이 많은 서버에 적절하다(=동시접속자 수)
– 프로세스당 스레드가 여러개 이며 최대 64개의 스레드 처리가 가능하다.
– 스레드간에 메모리를 공유한다.
– 멀티 CPU 시스템에 적절하다.

이렇게 두가지 방식만 존재하였던 과거와는 달리 현재에는 Event Driven 방식도 같이 지원한다.

Event Driven 방식은 Nginx로 유명한데 한개 또는 고정된 프로세스만 생성하고 그 프로세스의 내부에서 비 동기 방식으로 효율적으로 작업을 처리한다. (속도가 가장 빠르다)

그래서 나는 Nginx에서 Apache로 왔기때문에 Event Driven 방식을 적용해 보겠다. 지금 apache에 적용되어있는 정보를 먼저 확인해보자.

apachectl -V 로 확인가능.
현재 prefork 방식을 사용하고있다

이제 사용가능한 MPM을 확인해보자
ll /etc/apache2/mods-available/mpm*

prefork, worker, event 방식이 존재한다.

각 모듈에 대한 설정값이 궁금하면 위에서 보이는 conf 값으로 확인이 가능하다.

요롷게.

이제 prefork 모듈에서 event 모듈로 변경해보겠다.
먼저 사용중인 prefork를 사용안함으로 설정한다

a2dismod mpm_prefrok

나같은 경우 위의 오류가 발생했다.

찾아보니 아파치에서 mpm_event를 적용하기 위해서는 php가 아닌 php-fpm을 설치해야 한다고한다 그래서 php 삭제부터 다시 ㄱㄱ..

apt-get remove libapache2-mod-php7.2

y를 눌러서 삭제완료.

이제 php7.2 와 prefork를 중지하고 event와 fcgi를 활성화 시켜줍니다.

php7.2삭제해서 알아서 중지된듯..?

그리고 php7.2를 대신할 php7.2-fpm을 설치합니다.

이미깔려있습니다…(왜..?)

이제 PHP-FPM을 사용해서 PHP파일을 처리하도록 사용하는 VirtualHost 구성을 편집해야합니다.

vi /etc/apache2/sites-available/dalso.iptime.org.conf

맨위에

ProxyPassMatch ^/(..php(/.)?)$ unix:/run/php/php7.2-fpm.sock|fcgi://localhost/var/www/html/

줄을 추가시킵니다. 그리고 service apache2 restart로 재 시작

다시 apachectl -V로 확인해봅니다.

완료~

대세는 이미 Event-Driven 방식이다. 후딱 넘어가자

 

————————————————–

사이트 리뉴얼중입니다~

서버(Linux, ESXi), NAS(헤놀로지, ESXi 및 IT관련 정보, 기타 등등을 공유하는 커뮤니티 SVRFORUM을 새로 만들었습니다.
많은 가입(?) 부탁드립니다~
https://svrforum.com

이전글들은 모두 상단 메뉴의 Blog 글 모음에있습니다!

답글 남기기

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

홈서버 IT 커뮤니티 SVRFORUM
Link