서문:
최근 서버 메모리 사용량이 많이 증가한 것으로 확인되었으며, 이는 과도한 php-fpm 프로세스 수와 관련이 있는 것으로 나타났습니다. 이 기사에서는 php-fpm 구성 파일을 최적화하는 과정을 기록하고 php-fpm과 관련된 몇 가지 지식을 추가합니다.
php-fpm이란 무엇입니까?
php-fpm은 FastCGI 프로세스 관리자로, PHP의 메모리와 프로세스 등을 제어하는 데 사용됩니다.
작동 환경:
CentOS 7
문제 확인:
먼저 총 PHP 프로세스 수를 확인하세요.
pstree|grep php-fpm
Echo:
|-php-fpm---20*[php-fpm]
에코 정보에 따르면 2개가 있습니다. 0 PHP- fpm 프로세스.
다음 명령을 통해 가장 많은 메모리를 소비하는 상위 50개 프로세스를 나열할 수도 있습니다:
ps auxw|head -1;ps auxw|sort -rn -k4|head -50
해결 프로세스:
아래에서는 메모리 사용량을 줄이기 위해 구성 파일을 수정하여 php-fpm을 최적화합니다.
내 php-fpm 구성 파일은 .../server/php/etc/ 디렉터리에 있습니다. 이 디렉터리를 입력하세요.
먼저 원본 구성 파일을 백업하세요.
cp php-fpm.conf php-fpm.conf.bak
참고:
vim을 사용하여 구성 파일을 연 후 Esc 키를 누르고 "/"를 입력한 다음 "xxx"를 입력하여 "문자열"을 찾습니다. 트리플 엑스".
구체적인 구성 매개변수는 다음과 같습니다.
pm.max_children = 100改为:pm.max_children = 25 pm.start_servers = 20改为pm.start_servers = 5 pm.min_spare_servers = 5改为pm.min_spare_servers = 2 pm.max_spare_servers = 35改为pm.max_spare_servers = 10
서버 다시 시작:
reboot
다시 시작한 후 메모리 사용량이 이전보다 낮아진 것을 확인할 수 있습니다.
참고:
1. php-fpm.conf의 매개변수 설명:
pm.max_children:静态方式下开启的php-fpm进程数量。 pm.start_servers:动态方式下的起始php-fpm进程数量。 pm.min_spare_servers:动态方式下的最小php-fpm进程数。 pm.max_spare_servers:动态方式下的最大php-fpm进程数量。
2 위 설정을 할 때 php-fpm의 실행 모드를 동적으로 설정했습니다:
pm = dynamic
3.php. -fpm에는 두 가지 실행 방법이 있습니다.
하나는 정적이고 다른 하나는 동적입니다. static으로 설정하면 pm.max_children 매개변수만 적용됩니다. 동적으로 설정하면 세 가지 매개변수 pm.start_servers, pm.min_spare_servers 및 pm.max_spare_servers가 적용됩니다. 이를 동적으로 설정한 후 php-fpm이 시작되면 pm.start_servers의 매개변수 설정에 따라 해당 프로세스 수를 시작합니다. 그 후 php-fpm의 프로세스 수는 pm에 지정된 수 사이에서 유지됩니다. .min_spare_servers 및 pm.max_spare_servers.
4. php-fpm의 정적 또는 동적 실행 모드를 선택하는 방법:
동적 php-fpm 실행 모드를 사용하면 php-fpm이 중복 프로세스를 해제하여 메모리 리소스를 절약할 수 있습니다.
정적 php-fpm 실행 방법은 php-fpm이 프로세스 이상을 릴리스하는 것을 허용하지 않으므로 php-fpm 프로세스를 자주 시작하거나 중지하는 것을 방지하여 경우에 따라 서버의 응답 시간을 줄입니다.
PHP 관련 지식을 더 보려면 PHP 튜토리얼을 방문하세요!
위 내용은 CentOS7에서 너무 많은 php-fpm 프로세스로 인한 과도한 서버 메모리 리소스 소비 문제 해결의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!