본문 바로가기
IT이야기

[APACHE] 최대 접속자(maxclient) 확인 및 설정하기

by 너머스고(numusgo) 2024. 2. 14.

[APACHE] 최대 접속자(maxclient) 확인 및 설정하기

 

기존 시스템이 있거나 모니터링 툴이(APM) 있으면 동시 접속자 수나 시간대별 부하가 발생하는 것을 쉽게 알 수 있겠지만

대부분 빈약하게 서버 구성만 되어있다. 그래서 서비스 오픈을 하면 갑자기 사용자수가 늘어나면 서버가 감당을 못한다.

 

그렇게 되면 서버 재기동을 하면서 클라이언트 수를 클리어하는 행동을 한다. 이러면 맨붕이 온다.ㅜ.ㅜ

 

서버 환경에 맞는 클라이언트 설정을 하면 그나마 대응을 할 수 있다.

 

최적화는 서버 운영을 하면서 해야겠지만  그나마 경험된 파마미터를 적용하면 삽진을 줄 있일수 있다.

 

1. 메모리사용량을 계산하여 적용 방법

vi maxclient.sh

#/bin/sh

TotalMem=`free -m | grep Mem: | awk {'print $2'}`
TotalMem80per=$(echo "$TotalMem*0.8"|bc)
#pa aux to num 6 values RSS
TotalHttpMem=`ps aux | grep httpd | grep -v grep | awk '{print $6}' | awk '{total = total + $1} END {print total/1024}'`
httpCount=`ps aux | grep httpd | grep -v grep | wc -l`
averageHttpMem=$(echo "$TotalHttpMem / $httpCount" | bc)
MaxClient=$(echo "$TotalMem80per / $averageHttpMem" | bc)

echo "TotalMem : " $TotalMem
echo "TotalMem80per% : " $TotalMem80per
echo "http use mem total : "$TotalHttpMem
echo "http process count : "$httpCount
echo "http use mem average : "$averageHttpMem

echo "MaxClients " $MaxClient

 

2. 최적화된 값 예제

기본값

<IfModule mpm_worker_module>
StartServers 3
MinSpareThreads 75
MaxSpareThreads 250
ThreadsPerChild 25
MaxRequestWorkers 400
MaxConnectionsPerChild 0
</IfModule>


2048
<IfModule mpm_worker_module>
ServerLimit 16
MaxClients 2048
MinSpareThreads 512
MaxSpareThreads 1024
ThreadsPerChild 128
ThreadLimit 128
MaxRequestsPerChild 0
</IfModule>

2048
<IfModule mpm_worker_module>
ServerLimit 32
MaxClients 2048
MinSpareThreads 512
MaxSpareThreads 1024
ThreadsPerChild 64
# ThreadLimit 64
MaxRequestsPerChild 0
</IfModule>

4096
<IfModule mpm_worker_module>
ServerLimit 64
MaxClients 4096
MinSpareThreads 1024
MaxSpareThreads 2048
ThreadsPerChild 64
# ThreadLimit 64
MaxRequestsPerChild 0
</IfModule>


하이퍼프레임 (4 Core / 16GB)
<IfModule mpm_worker_module>
StartServers 9
ServerLimit 16
MinSpareThreads 16
MaxSpareThreads 512
ThreadsPerChild 64
MaxRequestWorkers 1024
MaxConnectionsPerChild 0
</IfModule>