-
웹 서버에 설치된 MPM 확인웹 운영 2021. 3. 27. 04:14반응형
운영 환경은 웹서버로 apache를 사용중이며,
웹 서비스 운영 중 웹서버 httpd.log에 이상한 로그가 남는 것을 확인하였다.
당장의 서비스에는 지장없어 보였으나, 해당 로그가 왜 남는지 분석해보기로 했다.
WARNING: MaxClients of 4096 would require 64 servers, and would exceed the ServerLimit value of 16. Automatically lowering MaxClients to 1024. To increase, please see the ServerLimit directive.
해당 로그 중 MaxClient, Serverlimit 등과 같은 내용으로 MPM 설정에서 나온 것으로 생각했다.
그래서 선임에게 확인한 내용으로는
"저희 웹서버 MPM 은 어떤 종류로 설정되어있나요?" 였고, 돌아오는 대답은 "Worker" 였다.
하지만
apachectl -V 로 확인되는건 Prefork 였다.
Server version: Apache/2.2.26 (Unix)
Server built:
Server's Module Magic Number:
Server loaded:
Compiled using:
Architecture: 64-bit
Server MPM: Prefork
threaded: no
forked: yes (variable process count)
Server compiled with....
분명 Prefork 로 보여지는데 이야기해주시는건 Worker 였다.
그러고나서 선임의 이야기에 따라 확인을 해보니 apachectl이 설치된 디렉토리로가서 ./apachectl -V 로 확인해보니 Worker 로 보여졌다.
Server version: Apache/2.2.26 (Unix)
Server built: Jul 18 2014 10:27:16
Server's Module Magic Number: 20051115:34
Server loaded: APR 1.4.8, APR-Util 1.5.2
Compiled using: APR 1.3.9, APR-Util 1.3.9
Architecture: 64-bit
Server MPM: Worker
threaded: yes (fixed thread count)
forked: yes (variable process count)
Server compiled with....일단 앞선 로그에서의 내용 확인도 확인이지만, 분명 OS에 MPM 설정은 전체로 반영되는줄 알았는데.. 왜 2개가 보여지는건지 확인해보았다.
선임과 저의 차이는 apachectl -V 로의 확인이냐 ./apachectl -V 로의 확인이냐의 차이였고,
이렇게 다른 명령어로 서로 다른 설정이 확인되는 경우는 OS에 설치된 apachectl과 별도로 설치한 apachectl MPM 설정이 다르기 때문이었다.
그렇다면, 현재는 기동중인 웹서버는 둘 중 어떤 설정으로 운영되는것일까?
"실제 프로세스로 기동된 httpd의 apache 경로를 확인하면 된다."
그럼 다시 돌아가서 WARNING 로그의 원인으로는
운영중인 웹서버는 Worker 의 MPM으로 설정되어있으며,
설정된 값 중 ServerLimit이 설정이 안되있으며,
<IfModule worker.c>
ThreadLimit 4096
StartServers 10
MaxClients 4096
MinSpareThreads 512
MaxSpareThreads 1024
ThreadsPerChild 64
MaxRequestsPerChild 10000
</IfModule>ServerLimit은 MaxClient / ThreadsPerChild 보다 크거나 같아야 하기 때문에 ServerLimit 64를 추가해주었다.
수정하여 재기동하였더니 해당로그는 확인되지 않았다.
* 로그확인을 통해 MPM에 대해 조금 더 알 수 있었고, OS에 설치된 apache와 별도로 설치된 apache로 인한 차이에 대해서도 알 수 있었다.
* MPM : (Multi-process Module) 다중 처리모듈로, 받아들인 요청에 대하여 처리 요청을 다중으로 분배하는 것
* Prefork vs Worker : 멀티프로세스를 사용해 요청을 처리하는 것과 멀티쓰레드오 멀티프로세스를 사용해 요청을 처리하는 차이.반응형'웹 운영' 카테고리의 다른 글
GC Overhead Limit Exceeded 발생.. (0) 2022.03.01 DNS (0) 2020.03.07 ISMS - Information Security Management System 심사 후기 (0) 2020.02.28 데브옵스란.. (3) 2020.02.07 웹 운영 회사 취업 후 신입 이야기 (1) 2019.12.24