서버가 지원하는 동시 연결 수를 확인하기 위해 서버를 테스트하고 있습니다. 저는 my mpm_prefork.conf
다음과 같이 구성합니다.
# prefork MPM
# StartServers: number of server processes to start
# MinSpareServers: minimum number of server processes which are kept spare
# MaxSpareServers: maximum number of server processes which are kept spare
# MaxRequestWorkers: maximum number of server processes allowed to start
# MaxConnectionsPerChild: maximum number of requests a server process serves
<IfModule mpm_prefork_module>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxRequestWorkers 100000
MaxConnectionsPerChild 0
</IfModule>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
그러나 내 서버가 약 8200개의 동시 연결을 수신하면 오류가 발생하고 Apache가 더 이상 응답하지 않습니다.
[notice] caught SIGTERM, shutting down
서버에 메모리가 충분하고 여유가 있습니다.
구성 괜찮나요? 변경해야 할 사항이 있나요?
감사해요
답변1
값 도 변경해야 합니다 ServerLimit
. ~에서MaxRequestWorkers
문서:
스레드되지 않은 서버(즉, 프리포크)의 경우 MaxRequestWorkers는 요청을 처리하기 위해 시작될 최대 하위 프로세스 수로 변환됩니다.기본값은 256입니다. 이를 늘리려면 ServerLimit도 늘려야 합니다..
그런데 거기에 메모가 있어요서버 제한 사항 문서:
서버에 컴파일되는 ServerLimit 20000이라는 하드 제한이 있습니다.(프리포크 MPM 200000의 경우) 이는 철자 오류로 인한 부정적인 영향을 방지하는 것입니다. 이 한도 이상으로 늘리려면 mpm 소스 파일에서 MAX_SERVER_LIMIT 값을 수정하고 서버를 다시 빌드해야 합니다.