아파치 MPM Worker 모듈의 값을 계산 방법
1. CPU 코어 수 확인
CPU 코어 수를 확인합니다. 리눅스에서는 nproc 명령어를 사용하여 확인할 수 있습니다.
$ nproc
4
2. 메모리 총 용량 확인
메모리 총 용량을 확인합니다. 리눅스에서는 free 명령어를 사용하여 확인할 수 있습니다.
$ free -h
total used free shared buff/cache available
Mem: 7.8Gi 234Mi 7.2Gi 1.0Mi 306Mi 7.3Gi
Swap: 4.0Gi 0B 4.0Gi
MPM Worker 계산하는 방법
1. StartServers 계산:
- StartServers 값은 보통 CPU 코어 수에 비례하여 설정합니다.
- StartServers = CPU 코어 수
2. MinSpareThreads 계산:
- MinSpareThreads 값은 워커 프로세스의 최소 대기 스레드 개수를 설정합니다.
- MinSpareThreads = ThreadsPerChild
3. MaxSpareThreads 계산:
- MaxSpareThreads 값은 워커 프로세스의 최대 대기 스레드 개수를 설정합니다.
- MaxSpareThreads = ThreadsPerChild * 10
4. ThreadsPerChild 계산:
- ThreadsPerChild 값은 각 워커 프로세스에서 생성되는 스레드 수를 설정합니다.
- ThreadsPerChild = CPU 코어 수 * 0.6 (또는 1)
ThreadsPerChild = (TotalThreads / TotalProcesses) + 1
(TotalThreads: 원하는 전체 스레드 개수, TotalProcesses: 원하는 전체 프로세스 개수)
5. MaxRequestWorkers 계산:
- MaxRequestWorkers는 동시에 처리할 수 있는 최대 클라이언트 요청 수를 설정합니다.
- 일반적으로 CPU 코어 수에 따라 조정하며, 150%에서 200% 사이의 값을 사용합니다.
- MaxRequestWorkers = CPU 코어 수 * 1.5 (또는 2)
MaxRequestWorkers = ThreadsPerChild * TotalProcesses
예를 들어
만약 CPU 코어 수가 4개이고 메모리 크기가 8GB인 경우, MPM Worker 모듈의 매개변수는 다음과 같이 계산할 수 있습니다.
1. MaxRequestWorkers:
- 일반적으로 CPU 코어 수에 따라 조정하며, 150%에서 200% 사이의 값을 사용합니다.
- MaxRequestWorkers = CPU 코어 수 * 1.5 (또는 2)
- MaxRequestWorkers = 4 * 1.5 = 6 (또는 8)
- 워커 프로세스가 처리하는 총 연결 수 계산:
TotalConnections = ThreadsPerChild * MaxRequestWorkers - 각 워커 프로세스당 처리 가능한 평균 연결 수 계산:
AverageConnections = TotalConnections / TotalProcesses - 워커 프로세스당 최대 연결 수 계산:
MaxConnectionsPerChild = AverageConnections / DesiredMaxConnections
- 워커 프로세스가 처리하는 총 연결 수 계산:
2. ThreadsPerChild:
- 일반적으로 CPU 코어 수에 따라 조정하며, 25에서 50 사이의 값을 사용합니다.
- ThreadsPerChild = CPU 코어 수 * 0.6 (또는 1)
- ThreadsPerChild = 4 * 0.6 = 2 (또는 4)
3. StartServers, MinSpareThreads, MaxSpareThreads:
- StartServers는 워커 프로세스의 초기 시작 수를 설정하고, MinSpareThreads는 최소 대기 스레드 개수를 설정하며, MaxSpareThreads는 최대 대기 스레드 개수를 설정합니다.
- StartServers는 일반적으로 1로 설정하고, MinSpareThreads는 ThreadsPerChild와 동일하게 설정하며, MaxSpareThreads는 ThreadsPerChild * 10 정도의 값을 사용합니다.
- StartServers = 1
- MinSpareThreads = ThreadsPerChild = 2 (또는 4)
- MaxSpareThreads = ThreadsPerChild * 10 = 2 * 10 = 20 (또는 4 * 10 = 40)
<IfModule mpm_worker_module>
StartServers 4
MinSpareThreads 4
MaxSpareThreads 40
ThreadsPerChild 2
MaxRequestWorkers 100
MaxConnectionsPerChild 50
</IfModule>
아파치 MPM Worker 계산기
curl -fsSL https://raw.githubusercontent.com/anti1346/zz/main/application_middleware/apache_mpm_worker_calculator.sh -o apache_mpm_worker_calculator.sh
bash apache_mpm_worker_calculator.sh
$ bash apache_mpm_worker_calculator.sh
Enter the number of CPU cores (default: auto-detect):
Enter the total memory size in GB (default: auto-detect):
StartServers: 4
MinSpareThreads: 4
MaxSpareThreads: 40
ThreadsPerChild: 2
MaxRequestWorkers: 100
MaxConnectionsPerChild: 50
위의 계산 결과를 바탕으로 MPM Worker 모듈의 매개변수를 설정하면 됩니다.
'리눅스' 카테고리의 다른 글
| [draft] 우분투에서 NTP 서버를 구성하는 방법 (0) | 2025.12.07 |
|---|---|
| [draft] 우분투에서 figlet과 lolcat을 함께 사용하여 컬러풀한 텍스트 아트를 만드는 방법 (0) | 2025.12.07 |
| [draft] 아파치 웹서버 MPM(prefork, worker) 설정 방법 (0) | 2025.12.07 |
| [draft] Apache MPM(prefork, worker, event)의 "#define DEFAULT_SERVER_LIMIT" 값을 변경하는 방법 (0) | 2025.12.07 |
| [draft] HTTP/2와 HTTP/3를 지원하는 SSL(TLS) 버전 (0) | 2025.12.07 |