|
In den letzten Tagen gab es viele Probleme mit Nginx 502 im Web, und ich dachte zunächst, wie viele andere, es sei ein Problem mit Nginx.
Das Web verwendet die Architektur von nginx+php, und die Website war schon lange nicht mehr online, sodass die Optimierung im Grunde nur eine anfängliche Konfiguration ist.
Beim Nachsehen php-fpm.log fanden Warnungen, die im Grunde mit dem Zeitpunkt der Sperrung der Website zusammenfielen. Ich fange hier an.
Ich habe zuerst auch nach etwas Dokumentation gesucht, aber am nächsten Tag gab es trotzdem ein Problem. Später überprüfte ich die Konfigurationsdatei und übersetzte sie (Baidu), aber die englische Grundlage war nicht gut. Das PM-Modul ähnelt dem Modul von Apache, das statisch und dynamisch ist.
Viele der im Internet erwähnten Anpassungen basieren größtenteils auf Dynamik, aber sie sagen nicht, wie dieses Modul definiert werden soll. Deshalb sollte jeder sich die Konfigurationsdatei genauer ansehen, wenn dynamisch und statisch verwendet wird. pm = statisch
; Die Anzahl der Kindprozesse, die erstellt werden sollen, wenn PM auf 'statisch' gesetzt wird, und die
; Maximale Anzahl von Kindprozessen, wenn PM auf 'dynamisch' oder 'auf Abruf' gesetzt ist.
; Dieser Wert setzt die Grenze für die Anzahl der gleichzeitigen Anfragen, die
; serviert. Äquivalent zur ApacheMaxClients-Direktive mit mpm_prefork.
; Äquivalent zur PHP_FCGI_CHILDREN-Umgebungsvariable im ursprünglichen PHP
; CGI. Die untenstehenden Standardwerte basieren auf einem Server mit wenig Ressourcen. Tue nicht
; Vergiss, PM.* an deine Bedürfnisse anzupassen.
; Hinweis: Verwendet, wenn PM auf 'statisch', 'dynamisch' oder 'auf Abruf' gesetzt ist
; Hinweis: Dieser Wert ist verpflichtend.
pm.max_Kinder = 300
; Die Anzahl der beim Start erstellten Kindprozesse.
; Hinweis: Wird nur verwendet, wenn PM auf 'dynamisch' gesetzt ist
; Standardwert: min_spare_servers + (max_spare_servers - min_spare_servers) / 2
;p m.start_servers = 50
; Die gewünschte Mindestanzahl an Idle-Server-Prozessen.
; Hinweis: Wird nur verwendet, wenn PM auf 'dynamisch' gesetzt ist
; Hinweis: Es ist verpflichtend, wenn PM auf 'dynamisch' gesetzt ist
;p m.min_spare_server = 20
; Die gewünschte maximale Anzahl von Inaktiv-Server-Prozessen.
; Hinweis: Wird nur verwendet, wenn PM auf 'dynamisch' gesetzt ist
; Hinweis: Es ist verpflichtend, wenn PM auf 'dynamisch' gesetzt ist
;pm.max_spare_server = 500
; Die Anzahl der Sekunden, nach denen ein Leerlaufprozess beendet wird.
; Hinweis: Wird nur verwendet, wenn PM auf 'Ondemand' gesetzt ist
; Standardwert: 10 Sekunden
pm.process_idle_timeout = 10s;
; Die Anzahl der Anfragen, die jeder Kindprozess vor dem Respawn ausführen sollte.
; Das kann nützlich sein, um Speicherlecks in Drittanbieter-Bibliotheken zu umgehen. Für
; Endlose Anfrageverarbeitung spezifiziere '0'. Äquivalent zu PHP_FCGI_MAX_REQUESTS.
; Standardwert: 0
pm.max_requests = 10240
Das rote Feld ist die Definition, und dann werden die Parameter entsprechend der Serversituation festgelegt
Wenn du den statischen Parameter pm.max_children verwendest, funktioniert es, der Rest nicht. Die Dynamik ist das Gegenteil.
2G-Speicher pm.max_children ist etwa 50 eingeschaltet, was notwendig ist, um sich an die tatsächliche Situation anzupassen.
Falls es einen Mangel gibt, möchte ich, dass ihr eure Meinung abgibt, 502 Lösungen.
|