Невозможно проверить fpm, видя параметры конфигурации pm. *

Я пытаюсь включить динамическое управление процессами для php-fpm v7.3. Вот мой php-pm.ini

[www]
pm = dynamic
pm.max_children = 25
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 20
pm.max_requests = 498

Проблема в том, что я не могу подтвердить, что мой fpm видит изменения. Я вижу, что он анализирует ini-файл:

$ docker-compose exec web php -i | grep "pm."

Additional .ini files parsed => /usr/local/etc/php/conf.d/docker-php-ext-gd.ini,
/usr/local/etc/php/conf.d/docker-php-ext-opcache.ini,
/usr/local/etc/php/conf.d/docker-php-ext-pcntl.ini,
/usr/local/etc/php/conf.d/docker-php-ext-pdo_mysql.ini,
/usr/local/etc/php/conf.d/docker-php-ext-sodium.ini,
/usr/local/etc/php/conf.d/php-pm.ini

Глядя на службу phpinfo () от fpm, я не вижу ни одного из pm. настройки у всех. Как я могу убедиться, что эти настройки подбираются? И если они есть, но не отображаются здесь, как я могу доказать это?

1
задан 31 December 2018 в 01:16
1 ответ

Вы не увидите эти настройки с php -i , потому что это скорее настройки, связанные с кодом. Попробуйте установить pm.status_path = / status , а затем перейдите по URL-адресу http: // localhost / status , и там вы увидите свои параметры php-fpm.

также вы можете посмотреть список процессов, чтобы увидеть, какой файл конфигурации в настоящее время используется с командой ps aux | grep php-fpm | grep master , или вы увидите его в выводе команды php-fpm -t .

Конечно, вы должны передать его в свой док-контейнер.

Редактировать OP / Webnet

Это решение помогло мне частично решить эту проблему, но были и другие части, которые помогли мне решить эту проблему. Поскольку это привело меня к начальному пути, я хочу убедиться, что patok получил признание, поэтому я расширю решение здесь.

Вместо того, чтобы загружать дополнительный файл ini через / usr / local / etc / php / conf .d / , мне нужно было изменить конфигурацию fpm на /usr/local/etc/php-fpm.d/www.conf внутри моего контейнера (вы можете добавить дополнительный ] .conf файл, если хотите, но я этого не сделал). Добавление этого в файл докеров выполнило задачу:

RUN sed -i -e 's/pm = .+?/pm = dynamic/' \
 -e 's/pm\.max_children = \d/pm\.max_children = 35/' \
 -e 's/pm\.start_servers = \d/pm\.start_servers = 10/' \
 -e 's/pm\.min_spare_servers = \d/pm\.min_spare_servers = 5/' \
 -e 's/pm\.max_spare_servers = \d/pm\.max_spare_servers = 20/' \
 -e 's/pm\.max_requests = \d/pm\.max_requests = 500/' \
 -e 's/pm\.process_idle_timeout = .+?/pm\.process_idle_timeout = 10s/' \
 /usr/local/etc/php-fpm.d/www.conf

Я смог подтвердить, что это решение работает, следуя методам, изложенным в PHP-FPM: Управление процессами , которые включали использование ab -n 10000 -c 200 http: //localhost/index.php для имитации 10 тыс. Запросов к моему сайту, что позволяет мне использовать docker-compose exec web ps aux | grep php-fpm (как упомянул patok), чтобы убедиться, что количество процессов fpm действительно было увеличено для обработки нагрузки.

2
ответ дан 3 December 2019 в 20:11

Теги

Похожие вопросы