본문 바로가기
 

하나성경

읽기 쉬운 성경, 하나성경을 소개합니다.

www.hbible.co.kr

웹서핑을 즐기며

[ChatGPT] 아파치 MPM prefork의 각 항목과 설정 방법에 대해 살펴보았습니다.

by 컴 여행자 2024. 11. 12.
728x90

 

아파치

 




<IfModule mpm_prefork_module>
 StartServers 8 
 MinSpareServers 5
 MaxSpareServers 20
 ServerLimit 10
 MaxRequestWorkers 10
 MaxRequestsPerChild 0

아파치 설정의 각 항목을 이해하기 쉽게 설명 좀 해주세요.



Apache 설정에서 <IfModule mpm_prefork_module> 블록과 그 내부 항목들은 Apache 서버의 멀티프로세싱 모듈(MPM) 중 하나인 prefork MPM을 사용하는 환경에서 프로세스의 수와 동작을 조절하기 위한 설정입니다. 각 항목의 역할을 이해하기 쉽게 설명하겠습니다.

  1. <IfModule mpm_prefork_module>:
    • 이 블록은 Apache가 mpm_prefork_module을 로드하고 있을 때만 이 설정을 적용하도록 합니다. mpm_prefork는 Apache 서버에서 요청마다 별도의 프로세스를 생성하여 처리하는 방식으로, 다른 모듈과 충돌이 적고 안정성이 높지만 메모리 소모가 상대적으로 많습니다.
  2. StartServers 8:
    • Apache가 시작될 때 처음으로 생성할 서버 프로세스의 수를 지정합니다. 이 값이 높을수록 초기 부하를 처리하기 쉬워집니다.
  3. MinSpareServers 5:
    • 대기 중인 최소 프로세스 수입니다. Apache는 항상 최소 이만큼의 대기 상태 프로세스를 유지하려고 하며, 만약 대기 중인 프로세스 수가 이 값보다 적어지면 새 프로세스를 생성합니다. 서버가 초기에 요청을 충분히 처리할 수 있도록 하는 역할을 합니다.
  4. MaxSpareServers 20:
    • 대기 중인 최대 프로세스 수입니다. 대기 중인 프로세스 수가 이 값을 초과하면, Apache는 불필요한 프로세스를 종료하여 자원을 절약합니다.
  5. ServerLimit 10:
    • 최대 서버 프로세스 수의 상한선을 지정합니다. 이 값은 MaxRequestWorkers 값보다 크거나 같아야 하며, Apache가 사용할 수 있는 프로세스 수의 최대값을 제한하여 자원 낭비를 방지합니다.
  6. MaxRequestWorkers 10:
    • 동시에 처리할 수 있는 최대 요청 수입니다. 즉, 최대 활성 프로세스 수를 지정합니다. 요청이 이 값을 초과하면, 나머지 요청은 기존 요청이 완료될 때까지 대기하게 됩니다.
  7. MaxRequestsPerChild 0:
    • 각 프로세스가 처리할 요청의 최대 수를 지정합니다. 이 값이 0이면, 프로세스는 종료되지 않고 계속 사용됩니다. 이 값을 특정 숫자로 설정하면 메모리 누수를 방지할 수 있지만 성능이 저하될 수 있습니다.

이와 같은 설정은 서버의 메모리와 처리 성능을 고려하여 조정해야 합니다. mpm_prefork 방식은 메모리를 더 많이 소비하지만, 각 요청을 독립적인 프로세스에서 처리하므로 안정성이 필요한 웹 서버 환경에 적합합니다.

 

 




그러면 메모리 사용을 최소화하고 동시 접속자 수를 늘리려면 어떤 항목을 어떻게 설정하는 것이 좋을까요?


메모리 사용을 최소화하면서 동시 접속자 수를 늘리기 위해서는 각 프로세스가 사용하는 메모리를 줄이거나 동시 접속자를 처리하는 프로세스 수를 효율적으로 조절해야 합니다. mpm_prefork 모듈은 프로세스 기반이므로 메모리 사용이 많은 편이지만, 몇 가지 설정을 통해 메모리 최적화를 시도할 수 있습니다.

아래는 메모리를 최소화하면서도 최대한 많은 동시 접속자를 처리하기 위해 조정할 수 있는 방법입니다.

  1. StartServers
    • Apache 서버 시작 시 최소한의 프로세스를 띄우는 것이 좋습니다. 너무 많은 프로세스를 띄우면 초기 메모리 사용량이 증가하므로, StartServers를 2~3 정도로 낮게 설정합니다.
  2. MinSpareServers 및 MaxSpareServers
    • 대기 상태 프로세스의 수를 줄여 메모리 사용을 절약할 수 있습니다.
      • MinSpareServers: 이 값을 2~3으로 줄여 대기 프로세스 수를 최소화합니다.
      • MaxSpareServers: 너무 많은 프로세스가 대기하지 않도록, 5~10 사이로 설정하여 메모리를 절약할 수 있습니다.
  3. ServerLimit 및 MaxRequestWorkers
    • 동시 접속자 수를 늘리려면 MaxRequestWorkers를 높여야 합니다. 하지만 이 값이 높아지면 각 프로세스가 차지하는 메모리 양이 누적되어 총 메모리 사용량이 크게 증가할 수 있습니다.
      • 서버 메모리 상황에 따라 ServerLimit과 MaxRequestWorkers를 약간 높게 설정할 수 있습니다.
      • 예를 들어, ServerLimit과 MaxRequestWorkers를 20 정도로 설정하여 동시 접속자 수를 늘리지만, 무리하지 않게 조정합니다.
  4. MaxRequestsPerChild
    • MaxRequestsPerChild를 1000~5000 정도로 설정하여 각 프로세스가 일정 요청을 처리한 후 재시작하게 하면 메모리 누수를 줄일 수 있습니다. 0으로 설정하면 메모리 누수 가능성이 높아지므로 주의합니다.

예시 설정

<IfModule mpm_prefork_module>
    StartServers 3
    MinSpareServers 2
    MaxSpareServers 5
    ServerLimit 20
    MaxRequestWorkers 20
    MaxRequestsPerChild 2000
</IfModule>
 

추가적인 고려 사항

  • 메모리를 많이 사용하는 모듈을 비활성화하거나, CGI와 같이 별도 프로세스를 많이 사용하는 기능을 줄여 메모리 사용량을 줄일 수 있습니다.
  • mpm_prefork가 아닌 mpm_event 또는 **mpm_worker**를 사용하는 것을 고려해 보세요. 이들 모듈은 스레드 기반으로 작동하므로, 메모리 사용량이 상대적으로 낮으면서도 많은 동시 접속자를 처리할 수 있습니다.

 

 

 

※ 참고사항 : 위 내용을 적용해서 정상 작동하는 것을 확인했습니다.

※ 주의사항 : ChatGPT가 생성한 글이므로 이 점을 고려해서 읽으시기를 권장합니다.

 

 

https://httpd.apache.org/docs/current/ko/sitemap.html

 

사이트맵 - Apache HTTP Server Version 2.4

 

httpd.apache.org

 

 

728x90
반응형

댓글