Apache httpd 2.2, mod_php 및 APC가 설치된 내 서버(Debian 6.0)에 메모리 문제가 있습니다.
실제로 httpd는 Mongodb의 응답을 너무 오래 기다리는 동안(30초 제한 시간) 사용 가능한 모든 메모리(4GB)를 할당하는 것 같습니다. 알겠습니다. 30초 제한 시간은 너무 길어요. 이렇게 오래 기다리면 프런트 엔드 서버가 메모리 교체를 시작하고 하드웨어가 완전히 멈출 때까지 로드 평균이 매우 높은 값(약 200)에 도달합니다.
MaxClients
현재 httpd 구성이 200으로 설정되어 있고 PHP 메모리 제한이 128MB이므로 문제가 있는 것 같습니다 . 최악의 경우 PHP 엔진당 최소 25GB RAM만 필요하지만 4GB가 있습니다.
- 128MB * 200 = 25MB
나의 겸손한 의견: 4GB에서 php memory_limit를 96MB로 줄이면 약 48개의 포크(예: MaxClients
48)를 지원해야 합니다. Apache httpd가 새로운 하위 프로세스를 포크하더라도 대부분의 메모리는 상위 프로세스와 공유됩니다.
- 총 메모리 4GB = Apache 하위 96MB * 48
MaxClients
그러나 모든 httpd 하위 프로세스가 공유하는 메모리의 양과 각 Apache httpd 프로세스가 할당하는 메모리의 양을 정확히 아는 방법은 무엇입니까?
그리고 PHP와 APC에 대해 이야기하면, 이 경우에도 각 엔진이 얼마나 많은 메모리를 공유하고 얼마나 많은 메모리가 할당되는지 어떻게 알 수 있습니까?