나는 데비안 서버에서 PHP-FPM을 실행하고 있습니다. 내 질문은 메모리 사용량에 관한 것입니다. PHP 내부에서만 memory_limit를 설정할 수 있으며 일부 요청에 대해서는 너무 낮아서는 안됩니다. 또한 PHP-FPM에서는 프로세스 수만 설정할 수 있으며, 많은 PHP 요청을 실행하고 있으므로 너무 낮아서는 안 됩니다.
대부분의 경우 프로세스는 약 2-20MB만 사용합니다. 프로세스 제한은 512이므로 대략 5-10GB의 RAM입니다. 그러나 일부 PHP 스크립트는 훨씬 더 많은 메모리를 사용할 수 있으므로 최대 허용 메모리는 약 1TB(512 프로세스 * 2048mb)입니다. 그리고 문제가 발생하면 Debian OOM Killer는 프로세스를 무작위로 종료합니다.
php-fpm의 총 메모리 사용량을 제한하는 방법이 있습니까? php-fpm이 전체 RAM이 부족하기 때문에 더 많은 프로세스를 생성하지 않는 엄격한 제한과 같습니다.
답변1
며칠 전 두 명의 php5-fpm 마스터가 너무 많은 프로세스를 생성했을 때 비슷한 문제가 발생했습니다. OOM Killer는 nginx를 죽임으로써 많은 도움을 주었습니다.
내가 찾은 해결책으로cgroup메커니즘메모리 하위 시스템. 이를 통해 모든 FPM 프로세스를 시스템 RAM의 60%로 제한되는 하나의 그룹에 넣을 수 있습니다.