php-fpm: aiuta a comprendere start_servers, min_spare_servers, max_spare_servers


10

Sto cercando di mettere a punto la mia installazione di PHP-FPM per il mio server, e non ho difficoltà a capire cosa fare con i pm.start_servers, pm.min_spare_serverse pm.max_spare_serversvariabili. sto usandopm = dynamic

pm.max_childrenè perfettamente chiaro. Ogni processo figlio serve 1 client Web alla volta. Ok. Che cos'è un "server", quindi? Chiaramente, in base alla configurazione predefinita che ho, 1 server può servire più di 1 figlio. Qual è il limite superiore? Cosa devo usare come regola empirica per # of children / server? O è collegato affatto? Su alcuni forum, qualcuno sosteneva che il numero di server dovrebbe essere 2 x # di core della CPU, ma ho visto configurazioni consigliate in cui il numero era molto più alto, 40-50.

Né la documentazione di PHP né i numerosi articoli "tuning php-fpm" disponibili sono stati assolutamente utili.

Risposte:


13

Fondamentalmente il numero di processi che php-fpm avrà in esecuzione in qualsiasi momento è molto configurabile quando si imposta dynamiccome si fa. Se impostato su, staticci saranno SEMPRE molti processi figlio in esecuzione. Generalmente lo si imposta su dinamico per risparmiare risorse. Ogni processo figlio può gestire una richiesta. Il limite superiore dipende da quanto è pesante la tua applicazione php e da quanto traffico ottieni. Dovresti anche calcolare la media del consumo di memoria di ogni bambino e assicurarti che NON permetti MAI al numero di figli di superare la quantità di RAM installata sul tuo server o inizierai a scambiare o anche il kernel inizierà a uccidere i processi.

; 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.

Quando si impostano queste opzioni, tenere presente quanto segue:

  • Quanto dura la tua richiesta media?
  • Qual è il numero massimo di visitatori simultanei che i siti ottengono?
  • Quanta memoria consuma in media ogni processo figlio?

3
Molto utile, grazie per la comprensione. Utile anche per il calcolo, usa questo ps --no-headers -o "rss,cmd" -C php-fpm | awk '{ sum+=$1 } END { printf ("%d%s\n", sum/NR/1024,"M") }'per vedere quanta memoria ha ogni lavoratore. tratto da community.webcore.cloud/tutorials/…
Matt The Ninja
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.