Я пытаюсь оптимизировать параметры PHP-FPM на VPS с несколькими доменами. Каждый домен настроен с собственным пользователем / группой, NGINX использует разные сокеты PHP-FPM. Для каждого домена я настроил правильного пользователя / группу.
Я обнаружил, что использование памяти было слишком высоким, причиной была неправильная конфигурация параметров дочерних элементов / сервера на PHP-FPM.
Конфигурация для каждого site выглядит следующим образом (только релевантная часть):
pm = dynamic
pm.max_children = 6
pm.start_servers = 2
pm.min_spare_servers = 2
pm.max_spare_servers = 4
pm.max_requests = 300
Настроено 11 доменов с назначенным общим объемом RAM 6 ГБ. Максимальное использование памяти должно быть менее 64 МБ для каждого экземпляра PHP-FPM (htop показывает максимальное использование 50 МБ), при максимальном использовании я должен достичь ~ 4 ГБ ОЗУ.
Я думаю, что я слишком сильно ограничиваю max_children , как мне узнать лучшую цену? Полагаю, проверка реальных посещений / дней на каждом сайте поможет найти эти значения? Мне не хватает какого-то «глобального» параметра php-fpm?
РЕДАКТИРОВАТЬ:
А как насчет:
; The maximum number of processes FPM will fork. This has been design to control
; the global number of processes when using dynamic PM within a lot of pools.
; Use it with caution.
; Note: A value of 0 indicates no limit
; Default Value: 0
; process.max = 128
в /etc/php-fpm.conf? Учитывая количество доменов на сервере, я мог бы увеличить max_children и добавить ограничение на порожденный глобальный процесс, верно?
Была ли замена машины?
Конфигурация ваших детей кажется нормальной, хотя и слишком консервативной. Действительно, с максимальным количеством детей == 6 и учитывая 11 доменов, вы должны использовать максимум 4224MiB оперативной памяти, чтобы вы вообще не прикасались к подкачке.
Другая вещь, с таким количеством детей и:
pm.max_requests = 300
Даже при легком трафике вы будете порождать и убивать PHP-процессы, подозреваете ли вы утечку памяти в вашей версии PHP или аппликаторах, размещенных на хостинге?
Трудно дать полный ответ без дополнительной информации, такой как среднее потребление памяти вашими PHP-процессами, количество хитов в секунду для php-скриптов и т.д.
Другое дело, проверьте настройку подменных модулей в
/proc/sys/vm/swappiness