Apache 웹서버는 prefork 불리우는 방법으로 클라이어트의 요청을 처리하도록 되어 있다.
prefork 는 Apache 2 부터 도입된 MPMs (다중처리 모듈들, Multi-Processing Modules) 중 하나이다. MPMs 에는 Prefork, Worker, Event 가 있으며 이외에도 Threadpool, Perchild, Leader 등 여러가지가 있다. yum 을 사용하여 설치되는 httpd 패키지는 prepork, worker, event 를 지원한다.
yum 을 설치를 하면 디폴트로 prepork 방식으로 동작하는데 아래 명령으로 현재 적용된 MPM 모듈을 확인할 수 있다.
httpd -V아래와 같은 내용으로 출력될 것이다.
환경
- CPU 2.0GHz (6Core), 16GB , 500GB * 2 (raid)
- CentOS 7.8.2003 (64bit)
- Apache 2.4.6 (64bit)
변경
Prefork 방식의 성능 저하는 단일 스레드의 자식 스레드에서 한번에 하나의 요청을 순차적으로 처리하는 방식에 의한 한계를 예상하고 성능적으로 가장 우수하다고 알려진 event 방식으로 변경하였다.
① /etc/httpd/conf.modules.d 경로의 00-mpm.conf 설정 파일에서 prefork MPM 부분은 주석처리하고 마지막의 event MPM 부분의 주석을 제거한다.
# Select the MPM module which should be used by uncommenting exactly # one of the following LoadModule lines: # prefork MPM: Implements a non-threaded, pre-forking web server # See: http://httpd.apache.org/docs/2.4/mod/prefork.html #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 MPM 방식으로 동작하게 된다.
systemctl restart httpd.service httpd -V
댓글 없음:
댓글 쓰기