PHP-FPM의 총 메모리 사용량 제한

PHP-FPM의 총 메모리 사용량 제한

나는 데비안 서버에서 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%로 제한되는 하나의 그룹에 넣을 수 있습니다.

훌륭한 문서: https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Resource_Management_Guide/ch-Using_Control_Groups.html

관련 정보