php-fpm: Hilft beim Verständnis von start_servers, min_spare_servers, max_spare_servers

10

Ich versuche , meine php-fpm Installation für meine Server zu stimmen, und ich habe Mühe , herauszufinden , was mit den zu tun pm.start_servers, pm.min_spare_serversund pm.max_spare_serversVariablen. ich benutzepm = dynamic

pm.max_childrenist vollkommen klar. Jeder untergeordnete Prozess bedient jeweils 1 Webclient. Okay. Was ist dann ein "Server"? Basierend auf der Standardkonfiguration, die ich habe, kann 1 Server mehr als 1 Kind bedienen. Was ist die Obergrenze? Was soll ich als Faustregel für die Anzahl der Kinder / Server verwenden? Oder ist es überhaupt verwandt? In einigen Foren behauptete jemand, dass die Anzahl der Server 2 x die Anzahl der CPU-Kerne betragen sollte, aber ich habe empfohlene Konfigurationen gesehen, bei denen die Anzahl viel höher war (40-50).

Weder die PHP-Dokumentation noch die vielen Artikel zum Thema "Tuning von php-fpm" waren überhaupt hilfreich.

Bintz
quelle

Antworten:

13

Grundsätzlich ist die Anzahl der Prozesse, die php-fpm zu jedem Zeitpunkt ausführen wird, sehr konfigurierbar, wenn Sie festlegen, dynamicwie Sie es tun. Wenn dort eingestellt, staticwerden IMMER so viele untergeordnete Prozesse ausgeführt. Im Allgemeinen setzen Sie es auf dynamisch, um Ressourcen zu schonen. Jeder untergeordnete Prozess kann eine Anforderung verarbeiten. Die Obergrenze hängt davon ab, wie stark Ihre PHP-Anwendung ist und wie viel Verkehr Sie erhalten. Sie sollten auch den durchschnittlichen Speicherverbrauch jedes Kindes berechnen und sicherstellen, dass Sie NIEMALS zulassen, dass die Anzahl der Kinder die auf Ihrem Server installierte RAM-Menge überschreitet, da Sie sonst mit dem Austauschen beginnen oder sogar den Kernel mit dem Beenden von Prozessen beginnen.

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

Beachten Sie beim Festlegen dieser Optionen Folgendes:

  • Wie lang ist Ihre durchschnittliche Anfrage?
  • Was ist die maximale Anzahl gleichzeitiger Besucher, die die Site (s) erhalten?
  • Wie viel Speicher verbraucht jeder untergeordnete Prozess durchschnittlich?
gbolo
quelle
3
Sehr hilfreich, danke für den Einblick. Verwenden Sie dies auch zur Berechnung, um ps --no-headers -o "rss,cmd" -C php-fpm | awk '{ sum+=$1 } END { printf ("%d%s\n", sum/NR/1024,"M") }'zu sehen, wie viel Speicher jeder Mitarbeiter hat. entnommen aus community.webcore.cloud/tutorials/…
Matt The Ninja