Dies spezifiziert die Verbindung, das Senden und das Lesen von PHP-CGIZeit, 300 Sekunden reichen, also meineServer504er erscheinen seltenGatewayAuszeitfehler. Das Wichtigste istphp-FPM.ConfvonAufstellen, was direkt zu 502 Bad Gateway und 504 Gateway Time-out führt.
Werfen wir einen genaueren Blick auf einige wichtige Teile von php-fpm.confParameter:
php-fpm.conf hat zwei entscheidende Parameter, einen ist "max_children" und der andere "request_terminate_timeout"
Ich habe zwei Einstellungen mit den Werten "40" und "900", aber dieser Wert ist nicht universell, sondern muss ich selbst berechnen.
So wird es berechnet:
Wenn deinDienstInstrumentLeistungGut genug, und die Breitbandressourcen sind ausreichend, PHPSchriftWenn es keine Schleifen oder Bugs gibt, kannst du die "request_terminate_timeout" einfach auf 0 setzen. 0s bedeutet, dass PHP-CGI ständig ohne Zeitlimit läuft. Wenn du das nicht kannst – also wenn dein PHP-CGI einen bestimmten Fehler hat, deine Bandbreite nicht ausreicht oder andere Gründe dazu führen, dass dein PHP-CGI stirbt – dann wird empfohlen, dem "request_terminate_timeout einen Wert zuzuweisen, der je nach Leistung deines Servers eingestellt werden kann. Im Allgemeinen gilt: Je besser die Leistung, desto höher kann man es einstellen, 20 bis 30 Minuten sind in Ordnung. Da meine Server-PHP-Skripte lange zum Ausführen brauchen, können manche länger als 10 Minuten dauern, also habe ich es auf 900 Sekunden eingestellt, damit PHP-CGI nicht ausfällt und der Fehler 502 Bad Gateway ausfällt.
Und wie wird der Wert von "max_children" berechnet? Im Prinzip gilt: Je größer, desto besser, php-CGI,AblaufWenn es weitere gibt, wird es schnell bearbeitet, und es wird nur wenige Anfragen in der Warteschlange geben. max_children Im Allgemeinen verbraucht ein Server unter normalen Umständen etwa 20 Mio. Speicher pro php-CGI, daher setze ich meinen "max_children" auf 40, 20M*40=800M, was bedeutet, dass alle PHP-CGI zur Spitzenzeit weniger als 800M verbraucht haben, was weniger ist als mein effektiver Speicher von 1 GB. Und wenn mein "max_children" kleiner eingestellt ist, zum Beispiel 5-10, dann wird php-CGI "sehr anstrengend", die Verarbeitungsgeschwindigkeit ist ebenfalls sehr langsam und die Wartezeit länger. Wenn die Anfrage lange nicht bearbeitet wurde, erscheint der 504 Gateway Time-out-Fehler, und das gerade verarbeitete php-CGI stößt auf einen 502 Bad Gateway-Fehler, falls es Probleme gibt.
|