728x90
아파치 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 계산하는 방법
- StartServers 계산:
- StartServers 값은 보통 CPU 코어 수에 비례하여 설정합니다.
- StartServers = CPU 코어 수
- MinSpareThreads 계산:
- MinSpareThreads 값은 워커 프로세스의 최소 대기 스레드 개수를 설정합니다.
- MinSpareThreads = ThreadsPerChild
- MaxSpareThreads 계산:
- MaxSpareThreads 값은 워커 프로세스의 최대 대기 스레드 개수를 설정합니다.
- MaxSpareThreads = ThreadsPerChild * 10
- ThreadsPerChild 계산:
- ThreadsPerChild 값은 각 워커 프로세스에서 생성되는 스레드 수를 설정합니다.
- ThreadsPerChild = CPU 코어 수 * 0.6 (또는 1)
ThreadsPerChild = (TotalThreads / TotalProcesses) + 1
(TotalThreads: 원하는 전체 스레드 개수, TotalProcesses: 원하는 전체 프로세스 개수)
- MaxRequestWorkers 계산:
- MaxRequestWorkers는 동시에 처리할 수 있는 최대 클라이언트 요청 수를 설정합니다.
- 일반적으로 CPU 코어 수에 따라 조정하며, 150%에서 200% 사이의 값을 사용합니다.
- MaxRequestWorkers = CPU 코어 수 * 1.5 (또는 2)
MaxRequestWorkers = ThreadsPerChild * TotalProcesses
예를 들어
만약 CPU 코어 수가 4개이고 메모리 크기가 8GB인 경우, MPM Worker 모듈의 매개변수는 다음과 같이 계산할 수 있습니다.
- MaxRequestWorkers:
- 일반적으로 CPU 코어 수에 따라 조정하며, 150%에서 200% 사이의 값을 사용합니다.
- MaxRequestWorkers = CPU 코어 수 * 1.5 (또는 2)
- MaxRequestWorkers = 4 * 1.5 = 6 (또는 8)
- 워커 프로세스가 처리하는 총 연결 수 계산:
TotalConnections = ThreadsPerChild * MaxRequestWorkers - 각 워커 프로세스당 처리 가능한 평균 연결 수 계산:
AverageConnections = TotalConnections / TotalProcesses - 워커 프로세스당 최대 연결 수 계산:
MaxConnectionsPerChild = AverageConnections / DesiredMaxConnections
- 워커 프로세스가 처리하는 총 연결 수 계산:
- ThreadsPerChild:
- 일반적으로 CPU 코어 수에 따라 조정하며, 25에서 50 사이의 값을 사용합니다.
- ThreadsPerChild = CPU 코어 수 * 0.6 (또는 1)
- ThreadsPerChild = 4 * 0.6 = 2 (또는 4)
- 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 모듈의 매개변수를 설정하면 됩니다.
728x90
'리눅스' 카테고리의 다른 글
[draft] 우분투에서 NTP 서버를 구성하는 방법 (0) | 2023.07.02 |
---|---|
CentOS 8에서 Failed to download metadata for repo 'appstream' 오류를 해결하는 방법 (0) | 2023.07.02 |
우분투에서 figlet과 lolcat을 함께 사용하여 컬러풀한 텍스트 아트를 만드는 방법 (0) | 2023.06.29 |
리눅스 apachetop 명령어 (0) | 2023.06.29 |
CentOS 7에서 curl을 컴파일하여 HTTP/2를 지원하도록 설치하는 방법 (0) | 2023.06.28 |