본문 바로가기

리눅스

아파치 MPM Worker 모듈의 값을 계산 방법

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 계산하는 방법

  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 모듈의 매개변수를 설정하면 됩니다. 

 

728x90