Рубрики
Uncategorized

Устраните проблему, из-за которой слишком много процессов php-fpm в CentOS 7 приводят к большому потреблению ресурсов памяти сервера

Автор оригинала: David Wong.

Предисловие:

В последнее время использование памяти сервера было высоким, и после проверки выяснилось, что это может быть связано с количеством процессов 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

После перезапуска можно обнаружить, что использование памяти ниже, чем раньше. Примечание:

  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 на динамический:

    после полудня

  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, что в некоторых случаях сокращает время отклика сервера.