php-fpm: membantu memahami start_servers, min_spare_servers, max_spare_servers

10

Saya mencoba untuk menyetel instalasi php-fpm saya untuk server saya, dan saya mengalami kesulitan mencari tahu apa yang harus dilakukan dengan pm.start_servers, pm.min_spare_serversdan pm.max_spare_serversvariabel. saya menggunakanpm = dynamic

pm.max_childrensangat jelas. Setiap proses anak melayani 1 klien web pada satu waktu. Baik. Apa itu "server"? Jelas, berdasarkan konfigurasi default yang saya miliki, 1 server dapat melayani lebih dari 1 anak. Apa batas atas? Apa yang harus saya gunakan sebagai aturan praktis # untuk anak-anak / server? Atau apakah itu terkait? Pada beberapa forum, seseorang mengklaim bahwa # server harus 2 x # core cpu, tetapi saya telah melihat konfigurasi yang disarankan di mana jumlahnya jauh lebih tinggi, 40-50.

Baik dokumentasi PHP maupun banyak artikel "tuning php-fpm" di luar sana sama sekali tidak membantu.

Bintz
sumber

Jawaban:

13

Pada dasarnya jumlah proses yang akan dijalankan php-fpm kapan saja sangat dapat dikonfigurasi ketika Anda mengaturnya dynamicseperti yang Anda lakukan. Ketika diatur ke staticsana SELALU akan ada banyak proses anak yang berjalan. Secara umum Anda mengaturnya menjadi dinamis untuk menghemat sumber daya. Setiap proses anak dapat menangani satu permintaan. Batas atas tergantung pada seberapa berat aplikasi php Anda dan berapa banyak lalu lintas yang Anda dapatkan. Anda juga harus menghitung rata-rata konsumsi memori setiap anak dan memastikan bahwa Anda TIDAK PERNAH memperbolehkan jumlah anak untuk melebihi jumlah ram yang diinstal pada server Anda atau Anda akan mulai bertukar atau bahkan meminta kernel memulai proses pembunuhan.

; Choose how the process manager will control the number of child processes.
; Possible Values:
;   static  - a fixed number (pm.max_children) of child processes;
;   dynamic - the number of child processes are set dynamically based on the
;             following directives:
;             pm.max_children      - the maximum number of children that can
;                                    be alive at the same time.
;             pm.start_servers     - the number of children created on startup.
;             pm.min_spare_servers - the minimum number of children in 'idle'
;                                    state (waiting to process). If the number
;                                    of 'idle' processes is less than this
;                                    number then some children will be created.
;             pm.max_spare_servers - the maximum number of children in 'idle'
;                                    state (waiting to process). If the number
;                                    of 'idle' processes is greater than this
;                                    number then some children will be killed.
; Note: This value is mandatory.

Saat mengatur opsi ini pertimbangkan hal berikut:

  • Berapa lama permintaan rata-rata Anda?
  • Berapa jumlah maksimum pengunjung simultan yang didapat situs?
  • Berapa banyak rata-rata memori yang dikonsumsi setiap anak?
gbolo
sumber
3
Sangat membantu, terima kasih atas wawasannya. Juga berguna untuk perhitungan, gunakan ini ps --no-headers -o "rss,cmd" -C php-fpm | awk '{ sum+=$1 } END { printf ("%d%s\n", sum/NR/1024,"M") }'untuk melihat berapa banyak memori yang dimiliki setiap pekerja. diambil dari community.webcore.cloud/tutorials/…
Matt The Ninja