Bagaimana dan di mana untuk mengkonfigurasi pm.max_children untuk php-fpm dengan Docker?

Dalam aplikasi Web Dengan Nginx dan PHP-FPM, saya perhatikan saat-saat kelambatan dan menganalisis log, saya menemukan pesan ini, yang muncul dari waktu ke waktu:

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

Setelah beberapa penelitian, saya meningkatkan nilai di php.file konfigurasi ini, berhenti dan dihapus wadah php dan membangunnya kembali, untuk pengaturan diatur ke file pada volume memiliki efek.

Menganalisis file konfigurasi di dalam wadah, itu dengan nilai baru yang saya tetapkan, pesan kesalahan tentang pm.max_children (5) terus muncul.

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

Berikut adalah potongan dari ./php / config / php.ini:

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

Dan, jika saya lari:

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

Saya melihat nilai yang sama pada cuplikan di atas.

Jalur ke file konfigurasi di dalam wadah sudah benar, saya berlari:

$ php --ini 

di dalam wadah dan jalurnya ada dalam daftar file konfigurasi yang dimuat.

Saya telah menggoreng otak saya mencoba mengatasi masalah ini, tetapi sejauh ini saya belum berhasil.

Ada ide?

Saya mungkin salah, tetapi dengan asumsi Anda menggunakan gambar PHP resmi, pengaturan pm tersebut harus ditempatkan di dalam /usr/local/etc/php-fpm.d/ Direktori di dalam file dengan ekstensi conf. Menurut dokumen PHP, pengaturan tersebut adalah FPM terkait dan meskipun mereka menggunakan php.ini sintaks, mereka harus ditempatkan di file yang berbeda, jadi saya percaya bahwa pengaturan pm anda diabaikan. Ini Dockerfile dalam PHP membantu saya untuk mencari tahu di mana file-file conf seharusnya.

Saya akan memeriksa apakah Anda memiliki /usr/local/etc/php-fpm.d/www.conf file di dalam wadah anda di mana itu max_children sekarang diatur ke 5. Jika demikian, saya kira Anda dapat memodifikasi Dockerfile Anda untuk menyalin www baru.file conf yang menetapkan nilai yang lebih tinggi untuk pm.max_children.

Saya menemukan lebih jelas untuk menimpa pengaturan khusus menggunakan file yang dikirimkan bersama pejabat php:7.3-fpm gambar: /usr/local/etc/php-fpm.d/zz-docker.conf

File ini diakhiri dengan sesuatu seperti:

[www]listen = 9000

Jadi kita bisa menambahkannya dengan apa yang perlu kita atur untuk kumpulan www.

Misalnya:

# 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

Saya pikir itu lebih sederhana dan lebih jelas.