Middleware (오픈소스 활용-20) apache, nginx (prefork & worker) 방식에 따른 MaxClient 적용방법
페이지 정보
작성자 미들웨어 아이디로 검색 전체게시물 댓글 0건 조회 1,552회 좋아요 0회 작성일 23-05-23 17:17본문
안녕하세요. 미들웨어 입니다.
Nginx, Apache 을 사용하다 보면 서비스가 느려지는 경우가 종종 발생합니다.
WAS 상태일경우는 모니터링Tool이 워낙 잘되있어서 scouter, jennifer등으로 확인 하면 되지만,
WEB Server 경우는 모니터링 하기가 좀 까다롭긴 합니다.
apache, nginx에서 default 로 설치하면 누락되는 부분이 바로 MaxClient 부분 입니다.
이 내용은 WEB Server 에서 MaxClient 설정을 재대로 안잡아줘서 리소스가 충분한데도 사용을 못하는 경우 참고하시면 좋은 내용으로 작성해봤습니다.
실제로 얼마전에도 해당 옵션으로 서비스 지연부분을 해결했습니다.
- Apache worker 내용링크
- Oracle http 매뉴얼 관련 부분
https://docs.oracle.com/middleware/1213/core/ASPER/http.htm#ASPER99079
apache 에서 MaxClient 를 증가해서 사용할 경우가 많습니다.
사용량이 많을때나, 아니면 부하테스트를 할때... MaxClient 의 값을 조절하는데요.
그럴때 apache 에서는 두가지 방식으로 ./configure 을 수행합니다.
defailt... 값은 ./configure 할때 아무것도 안넣어 주면 profork 방식으로 진행이 됩니다.
허나 cpu가 많고 서버사양이 좋으면 보통.. worker 방식을 선호하긴 합니다.
이번에 알려드리는 방법은 profork 방식일때 MaxClient 를 조절하는 방법과 worker방식일때 조절하는 방법에 대해 정리해 드리겠습니다.
profork 일경우와 worker 경우일때 적용방법의 차이가 있으며 apache 의 default 설정값은 prefork입니다.
worker 방식을 사용하고자 할경우 ./configure 수행시 --with-mpm=worker 옵션 삽입하면 됩니다.
1번... 자신의 apache 가 prefork 방식인지 worker 방식인지 확인하는 방법
위 처럼 설정을 하시고 /bin/ ./httpd -V 로 확인해보시면 아래의 사향이 나옵니다.
[preorderweb5:/apache/apache-2.2.21/bin]# ./httpd -V
.....
Architecture: 64-bit
Server MPM: Prefork
threaded: no
forked: yes (variable process count)
Server compiled with....
-D APACHE_MPM_DIR="server/mpm/prefork" <-- 이걸로 자신의 apache 의 설정값 확인가능.
... 생략
1) prefork 방식 (안전성이 뛰어남)
자식프로세스 <---> 스레드
자식프로세스 <---> 스레드
자식프로세스 <---> 스레드
2) worker 방식 (다중방식으로 처리가 가능)
<--- 스레드 (1)
자식프로세스 <--- 스레드 (2)
<--- 스레드 (3)
###########################
(DEFAULT_SERVER_LIMIT 설정)
###########################
경로 : /server/mpm/prefork/prefork.c
파일 : prefork.c
#define DEFAULT_SERVER_LIMIT 256 <-- 1024 or 2048로 변경
경로 : server/mpm/worker/worker.c
파일 : worker.c
#define DEFAULT_SERVER_LIMIT 16 <-- 128 로 변경
(server/mpm/prefork/prefork.c 의 SERVER_LIMIT 값을 1024로 변경한경우)
#define DEFAULT_SERVER_LIMIT 16 <-- 256 로 변경
(server/mpm/prefork/prefork.c 의 SERVER_LIMIT 값을 2048로 변경한경우)
###############
(MaxClient 설정)
###############
아파치 컴파일
1) /conf/httpd.conf
Include conf/extra/httpd-mpm.conf
2) /conf/extra/httpd-mem.conf 파일 수정
=> prefork 일때 ..
<IfModule mpm_prefork_module>
StartServers 16
MinSpareServers 256
MaxSpareServers 1024
MaxClients 2048
MaxRequestsPerChild 0
</IfModule>
=> worker 일때 .. (MaxClients 2048 ~ 4096 지원가능)
<IfModule mpm_worker_module>
StartServers 16
MaxClients 2048
MinSpareThreads 256
MaxSpareThreads 1024
ThreadsPerChild 64
MaxRequestsPerChild 0
</IfModule>
댓글목록
등록된 댓글이 없습니다.