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