PHP-FPM调优性能+低内存

PHP-FPM具有默认配置,该配置使用的内存超出了必要。 它具有备用的PHP-FPM流程,可以随时运行,并且在有PHP代码要处理的情况下会占用内存。 虽然不是问题,但是如果您有大量的RAM,这可能是低VPS RAM的问题,并且,如果您使用积极的页面缓存,则不必要使用此内存,该内存可用于MariaDB(MySQL)或其他重要内存流程。 本指南说明了如何使用运行PHP 7.0的PHP-FPM配置Nginx以使用尽可能少的RAM。

PHP-FPM调优性能+低内存

打开PHP 7.0的PHP-FPM配置文件。

sudo nano /etc/php/7.0/fpm/pool.d/www.conf

调整以下数值如下图,注意 面前 pm.start_serverspm.min_spare_servers pm.max_spare_servers

pm = ondemand 意味着仅在需要时才生成PHP-FPM中的子进程

pm.max_children 这是允许的最大子进程数,50个是相当自由的,但是如果您在日志存档中看到子进程数已超过最大值,则需要增加该值

pm.process_idle_timeout 子进程闲置10秒后将其杀死

pm.max_requests 设置每个子进程的最大PHP请求数

pm = ondemand

; Число дочерних процессов, которые будет создано, когда pm установлен в 'static' и
; Максимальное число дочерних процессов, когда pm установлен в 'dynamic' и 'ondemand'.
; Это значение устанавливает ограничение на количество одновременных запросов, которые будут
; запускаться. Эквивалент директивы ApacheMaxClients в mpm_prefork.
; Эквивалентная переменная среды PHP_FCGI_CHILDREN в оригинальном PHP
; CGI. Ниже, по умолчанию основаны на сервере без использования значительных ресурсов. Не
; забудьте настройки часов.* чтобы соответствовать вашим потребностям.
; Примечание: используется, когда pm установлен в 'static', 'dynamic' или 'ondemand'
; Примечание: это значение является обязательным.
pm.max_children = 50

; Число дочерних процессов, созданных при запуске.
; Примечание: используется только тогда, когда pm установлен в "dynamic"
; Значение по умолчанию: min_spare_servers + (max_spare_servers - min_spare_servers) / 2
;pm.start_servers = 2

; Требуемое минимальное число неактивных процессов сервера.
; Примечание: используется только тогда, когда pm установлен в "dynamic"
; Примечание: обязательное, когда pm установлен в "dynamic"
;pm.min_spare_servers = 1

; Требуемое максимальное число неактивных процессов сервера.
; Примечание: используется только тогда, когда pm установлен в "dynamic"
; Примечание: обязательное, когда pm установлен в "dynamic"
;pm.max_spare_servers = 3

; Число секунд, по истечении которых бездействующий процесс будет убит.
; Примечание: используется только тогда, когда pm установлен в 'ondemand'
; Значение по умолчанию: 10s
pm.process_idle_timeout = 10s;

; Число запросов после которых дочерний процесс будет перезапущен.
; Это может быть полезно во избежания утечек памяти в 3-й партии библиотек. Для
; бесконечной обработки запроса укажите '0'. Эквивалент PHP_FCGI_MAX_REQUESTS.
; Значение по Умолчанию: 0
pm.max_requests = 500

检查您的PHP-FPM配置语法是否正确

php-fpm7.0 -t

您应该看到配置生效

[01-Jun-2017 15:51:34] NOTICE: configuration file /etc/php/7.0/fpm/php-fpm.conf test is successful

您现在可以重新启动php7.0-FPM

sudo service php7.0-fpm restart

您可以看到正在使用的RAM数量明显减少。

Sidebar