Cómo y dónde configurar pm.max_children para php-fpm con Docker?

En una aplicación Web con Nginx y PHP-FPM, he notado momentos de lentitud y al analizar los registros, encontré este mensaje, que aparece de vez en cuando:

[19-Nov-2017 19:24:09] WARNING: [pool www] server reached pm.max_children setting (5), consider raising it

Después de algunas investigaciones, aumenté los valores en php.archivo de configuración ini, detuvo y eliminó el contenedor php y lo reconstruyó, para que la configuración establecida en un archivo en un volumen surta efecto.

Analizando el archivo de configuración dentro del contenedor, es con los nuevos valores que establezco, sin embargo, el mensaje de error sobre pm.max_children (5) sigue apareciendo.

Here is my docker-compose.ymlversion: '2'services:               pi_web:        build: ./nginx        ports:            - "80:80"            - "443:443"        volumes:            - ../src:/src            - ./nginx/conf.d:/etc/nginx/conf.d            - ./nginx/nginx.conf:/etc/nginx/nginx.conf            - /etc/letsencrypt:/etc/letsencrypt    pi_php:        build: ./php        volumes:            - ../src:/src            - ./php/config/php.ini:/usr/local/etc/php/php.ini

Aquí hay un fragmento de la ./php/config / php.ini:

pm = dynamicpm.max_children = 40pm.start_servers = 15pm.min_spare_servers = 15pm.max_spare_servers = 25

Y, si corro:

$ docker exec -it docker_pi_php_1 cat /usr/local/etc/php/php.ini

Veo los mismos valores en el fragmento de arriba.

La ruta al archivo de configuración dentro del contenedor es correcta, ejecuté:

$ php --ini 

dentro del contenedor y la ruta está en la lista de archivos de configuración cargados.

Me he frito el cerebro tratando de evitar este problema, pero hasta ahora no lo he logrado.

Alguna idea?

Puede que me equivoque, pero suponiendo que esté utilizando las imágenes oficiales de PHP, esas configuraciones de pm deben colocarse dentro del /usr/local/etc/php-fpm.d/ directorio dentro de un archivo con extensión conf. De acuerdo con los documentos de PHP, esos ajustes son FPM relacionados y aunque utilizan php.ini sintaxis, deben colocarse en un archivo diferente, por lo que creo que se están ignorando sus configuraciones de pm. Este Dockerfile en PHP ayudó para que averigüe dónde se supone que están esos archivos de configuración.

Comprobaría si tienes un /usr/local/etc/php-fpm.d/www.conf archivo dentro de su contenedor donde eso max_children ahora está configurado en 5. Si es así, supongo que podría modificar su Dockerfile para copiar una nueva www.archivo conf que establece un valor más alto para pm.max_children.

Me resulta más claro sobrescribir configuraciones específicas usando el archivo que se envía con el oficial php:7.3-fpm imagen: /usr/local/etc/php-fpm.d/zz-docker.conf

Este archivo termina con algo como:

[www]listen = 9000

Por lo tanto, podemos agregarlo exactamente con lo que necesitamos establecer para el grupo www.

Por ejemplo:

# SETUP PHP-FPM CONFIG SETTINGS (max_children / max_requests)RUN echo 'pm.max_children = 15' >> /usr/local/etc/php-fpm.d/zz-docker.conf && \    echo 'pm.max_requests = 500' >> /usr/local/etc/php-fpm.d/zz-docker.conf

Creo que es más simple y claro.