web-dev-qa-db-ja.com

Dockerでphp-fpmのpm.max_childrenを構成する方法と場所

NginxとPHP-FPMを使用するWebアプリケーションで、速度が低下する瞬間に気づき、ログを分析したところ、次のメッセージがときどき表示されました。

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

少し調べた後、php.ini構成ファイルの値を増やしましたphpコンテナーを停止して削除し、それを再構築します。ボリューム上のファイルに設定された設定に影響がありました。

コンテナー内の構成ファイルを分析すると、設定した新しい値が含まれていますが、pm.max_children(5)に関するエラーメッセージが引き続き表示されます。

Here is my docker-compose.yml

version: '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

./php/config/php.iniのスニペットは次のとおりです。

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

そして、私が実行すると:

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

上記のスニペットに同じ値が表示されています。

コンテナー内の構成ファイルへのパスは正しく、実行しました:

$ php --ini 

コンテナ内にあり、パスはロードされた構成ファイルのリストにあります。

私はこの問題を回避しようとして頭を揚げてきましたが、今のところ成功していません。

何か案は?

6
lfalmeida

私は間違っているかもしれませんが、公式のPHPイメージを使用している場合、これらのpm設定はconf拡張子が付いたファイル内の/usr/local/etc/php-fpm.d/ディレクトリ内に配置する必要があります。 PHP docsによると、 これらの設定はFPMです 関連しており、php.ini構文を使用していますが、別のファイルに配置する必要があるため、pm設定は無視されています。これ Dockerfile in PHP helped これらのconfファイルがどこにあるべきかを知るために私は。

/usr/local/etc/php-fpm.d/www.confmax_childrenに設定されている5ファイルがコンテナ内にあるかどうかを確認します。その場合は、Dockerfileを変更して、pm.max_childrenに高い値を設定する新しいwww.confファイルをコピーできます。

6
Miguel A. C.