< prefork 방식 >
-> 자식 프로세스를 미리 준비해두는 방식
-> 자식 프로세스는 최대 1024개
-> 하나의 자식 프로세스당 1개의 스레드 연결
-> 스레드간 메모리 공유를 하지 않아 독립적사용으로 안정적이나 메모리를 많이 사용함
< worker 방식 >
-> 프로세스당 여러개의 스레드 연결
-> 스레드간 메모리를 공유하여 메모리 사용량이 비교적 적음
-> 통신량이 많은 서버에 적합
< event 방식>
-> 아파치 2.4.x 버전부터 생성된 방식
-> worker 방식을 기반으로 함
-> keepalive 시에 클라이언트로부터 요청을 기다리고 있는 자식 프로세스 또는 자식 스레드 전체를 keep하게
되는 문제를 해결하기 위하여 리스닝 소켓과 기타 모든 소켓을 처리하는 각 프로세스를 위한 전용 리스너
스레드를 사용
<prefork 방식>
/usr/local/apache/conf/extra/httpd-mpm.conf
<IfModule mpm_prefork_module>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxRequestWorkers 300
ServerLimit 300
MaxConnectionsPerChild 0
</IfModule>
-> StartServer : 아파치서버의 자식 프로세스 개수 지정.
-> MinSpareServers, MaxSpareServers : 부하가 적어서 MinSpareServers 개수 보다 적었을 경우 최소한 이 개수 만큼 아파치가 유지하려 하며, 부하가 증가하여 프로세스 개수가 많아질 경우에 MaxSpareServers 개수 이하로 줄이려고 아파치가 구동 됩니다. 절대적인 수치는 아닙니다.
-> MaxRequestWorkers, ServerLimit : 기본값이 256 이기 때문에 MaxRequestWorkers 값이 256보다 작으면 따로 적을 필요가 없으며, 256보다 크면 그와 같은 값으로 설정해야합니다.
-> MaxReqeustPerChild : 클라이언트들의 요청 개수를 제한, 만약 자식 프로세스가 이 값만큼의 클라이언트 요청을 받았다면 이 자식 프로세스는 자동으로 kill 됩니다. (0 인 경우 무한대)
<worker 방식>
/usr/local/apache/conf/extra/httpd-mpm.conf
<IfModule mpm_worker_module>
StartServers 3
MaxClients 150
MinSpareThreads 75
MaxSpareThreads 250
ThreadsPerChild 25
MaxRequestWorkers 400
MaxConnectionsPerChild 0
</IfModule>
-> StartServers(Default 3) : 시작시에 생성되는 서버 프로세스의 개수, 자식 프로세스의 수는 부하에 따라 동적으로 변경되기 때문에 이 값은 큰 의미가 없습니다.
-> ServerLimit (default : 16) : 구성 가능한 child 프로세스의 제한 수. ServerLimit 값이 필요 이상 높게 설정 된다면, 불필요한 공유 메모리가 할당 되므로 적절한 설정 필요합니다. MaxClient 와 ThreadPerChild 에서 요구한 프로세스 수보다 높게 설정하지 마시기 바랍니다.
-> MaxClient (default : ServerLimit * ThreadsPerChild) : 동시에 처리될 최대 커넥션(request)의 수, MaxClients 수치를 초과한 후 온 요청들은 ListenBackLog에 의해 대기상태가 됩니다. ThreadsPerChild 옵션과 매우 긴밀하게 작용, 동시접속자가 많을 경우, MaxClient값을 증가시켜야 합니다. OS의 FD(File Descriptor)값을 증가 시켜 MaxClient 의 상한값을 증가시키시기 바랍니다.
-> MinSpareThreads(default 75) : 최소 thread 개수, 서버에 idle 쓰레드가 충분하지 않다면 child 프로세스는 idle 쓰레드가 MinSpareThreads 보다 커질때까지 생성됩니다.
-> MaxSpareThreads(default 250) : 최대 thread개수, 서버에 너무 많은 idle 쓰레드가 존재하면 child 프로세스는 idle 쓰레드가 MaxSpareThreads 수보다 작아질 때까지 kill 됩니다.
-> ThreadPerChild : 개별 자식 프로세스가 지속적으로 가질 수 있는 Thread의 개수.
-> MaxRequestPerChild : 자식 프로세스가 서비스할 수 있는 최대 요청 개수
-> ThreadLimit (default : 64) : child 프로세스의 라이프주기 동안 ThreadsPerChild 의 최대 설정값을 설정합니다. ThreadLimit 가 ThreadsPerChild 보다 훨씬 높게 설정된다면, 여분의 미사용 공유 메모리가 할당될 것입니다. ThreadLimit 과 ThreadsPerChild 모두 시스템이 감당할 수 있는 값 보다 높게 설정하면, 아파치가 기동되지 않거나 시스템이 불안정하게 될 수 있습니다.최대 예상 ThreadsPerChild의 설정보다 높게 설정하면 안됩니다.
<event 방식>
# /usr/local/apache/conf/extra/httpd-mpm.conf
<IfModule mpm_event_module>
StartServers 3
MinSpareThreads 75
MaxSpareThreads 250
ThreadsPerChild 25
MaxRequestWorkers 400
MaxConnectionsPerChild 0
</IfModule>
/usr/local/apache/bin/apachectl -V | grep -i mpm
Server MPM: event
BigJu
'SW > Apache' 카테고리의 다른 글
게시판에 파일용량 100MB크기 업로드 가능하게 설정(centos 6) (0) | 2021.10.18 |
---|---|
VirtualHost 설정 하기 (0) | 2021.10.12 |
httpd.conf 옵션 (0) | 2021.10.10 |
게시판에 파일용량 500MB 크기를 첨부하여 업로드 가능하게 설정 (0) | 2021.10.09 |
httpd.conf 설정 (0) | 2021.10.05 |
댓글