Предисловие:
В последнее время использование памяти сервера было высоким, и после проверки выяснилось, что это может быть связано с количеством процессов php-fpm. В этой статье описан мой процесс оптимизации файлов конфигурации php-fpm и добавлены некоторые знания о php-fpm.
Что такое php-fpm:
Php-fpm, FastCGI process manager, is used to control the memory and process of php.
Операционная среда:
CentOS 7
Проверка вопроса: Сначала посмотрите на общее количество PHP-процессов:
pstree|grep php-fpm
Эхо:
|-php-fpm---20*[php-fpm]
Согласно информации echo, при запросе существует 20 процессов 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”, чтобы найти строку “xxx”. Конкретные параметры конфигурации следующие:
Pm.max_children = 100 instead: pm.max_children = 25 Change pm.start_servers = 20 to pm.start_servers = 5 Change pm.min_spare_servers = 5 to pm.min_spare_servers = 2 Change pm.max_spare_servers = 35 to pm.max_spare_servers = 10
Перезагрузите сервер:
reboot
После перезапуска можно обнаружить, что использование памяти ниже, чем раньше. Примечание:
- Объяснение роли параметров в 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 в динамическом режиме.
- При выполнении вышеуказанных настроек я установил режим выполнения php-fpm на динамический:
после полудня
- Существует два способа выполнения 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.
Как выбрать статический или динамический режим выполнения с помощью php-fpm:
Динамическое выполнение php-fpm позволяет php-fpm освобождать избыточные процессы, тем самым экономя ресурсы памяти. Статический режим выполнения php-fpm не позволяет php-fpm выпускать больше, чем процесс, избегая частого открытия или остановки процесса php-fpm, что в некоторых случаях сокращает время отклика сервера.