yum 패키지 매니저를 사용하여 설치한 Apache 웹서버는 prefork 불리우는 방법으로 클라이어트의 요청을 처리하도록 되어 있다. prefork 는 Apache 2 부터 도입된 MPMs (다중처리 모듈들, Multi-Processing Modules) 중 하나이다. MPMs 는 Prefork, Worker, Event 가 있으며 이외에도 Threadpool, Perchild, Leader 등 여러가지가 있다.
CASE
prefork 방식으로 설정된 Apache 웹서버를 잘 사용하고 있었으나 클라이언트 수가 늘어나면서 응답이 현저하게 지연되는 현상이 반복되었다. 응답이 지연되는 경우에도 CPU, Memory 은 충분한 여유가 있었다.
- CPU 2.0GHz (6Core), 32GB
- Redhat Linux 6.5 (64bit)
- Apache 2.2.14 (64bit)
SOLUTION
Prefork 방식의 성능 저하는 단일 스레드의 자식 스레드에서 한번에 하나의 요청을 순차적으로 처리하는 방식에 의한 한계로 추정하고 Worker 방식으로 변경하였다.
① /etc/sysconfig/httpd 설정 파일의 HTTPD 값을 /usr/sbin/httpd.worker 으로 변경한다.
② /etc/httpd/conf/httpd.conf 파일에서 worker MPM 설정을 변경한다.
③ 마지막으로 아파치 서버를 다시 시작하면 worker MPM 방식으로 동작하게 된다.
성능은 기대이상으로 놀라웠다. Prefork 방식의 경우와는 다르게 지연 없이 응답에 빠르게 동작하고 있다. 많은 요청이 발생하는 경우 멀티스레드 방식의 유용함을 체험할 수 있었다.
댓글 없음:
댓글 쓰기