Nginx / PHP - 504 Gateway Time-out

  • Mahlzeit,


    Gestern habe ich PHP von 7.3.9 auf 7.3.10 aktualisiert (Debian Buster, die PHP configs wurden beim update nicht überschrieben) und seit dem erhalte ich bei allen PHP Anwendungen vom nginx einen "504 Gateway Time-out". Selbst ein simples <?php echo "running"; ?> resultiert in einem timeout....


    In allen nginx error Logs steht:

    Zitat

    upstream timed out (110: Connection timed out) while reading response header from upstream

    recv() failed (104: Connection reset by peer) while reading response header from upstream (Dieser Fehler tritt nur vereinzelt auf)

    Der timeout ist hier standardmäßig auf 300 Sekunden eingestellt, diesen zu erhöhen sehe ich im Anbetracht dessen ein echo schon in einem timeout resultiert als sinnlos an. Nginx / php-fpm wurden schon neugestartet was jedoch keinen Erfolg brachte.



    PHP selbst sagt:

    Zitat

    [pool www] server reached pm.max_children setting (5), consider raising it

    pm.max_children habe ich per php-fpm.conf angehoben bzw. neu erstellt, jedoch auch hier kein Erfolg (gleiche Fehlermeldung)



    systemctl gibt folgenden Status aus:



    Als nächstes würde ich die PHP Version auf 7.3.9 zurückspielen (geht das überhaupt so einfach?) aber bevor ich das tue wollte ich Fragen ob jemand eventuell eine Lösung oder eine Vermutung hat wo das Problem begraben liegen könnte.

  • Du hast den Server komplett neugestartet? Läuft der php-Prozess im Hintergrund wirklich bis zum Timeout laut ps?

    "Security is like an onion - the more you dig in the more you want to cry"

  • Du hast den Server komplett neugestartet? Läuft der php-Prozess im Hintergrund wirklich bis zum Timeout laut ps?

    Ich habe den Server vorhin neugestartet: Fährt sauber hoch und alle Prozesse starten auch erstmal sauber. Jedoch kommt es nach wie vor zum timeout.


    Meinst du mit ps folgende Ausgabe oder eine andere?

  • Ich habe gerade herausgefunden, dass die Konfiguration der Kinderprozesse zusätzlich in der www.conf gesetzt waren und somit wohl überschrieben wurden. Diese habe ich nun angepasst und es scheint soweit zu laufen. Ich muss mal in den Backups schauen ob diese Werte schon früher gesetzt waren und wenn ja wie hoch dieser war, weil kurios ist die Sache schon irgendwie :/


    Habt Ihr eventuell Erfahrung mit der Konfiguration der Kinderprozesse unter php-fpm und könnt mir eventuell sagen ob die unten stehenden Werte soweit in Ordnung sind? Der Webserver stellt nur eine nextcloud Instanz und diverse kleinere PHP-Scripte bereit und hat im Allgemeinen kaum etwas zu tun.


    Code
    pm = dynamic
    pm.max_children = 50
    pm.start_servers = 12
    pm.min_spare_servers = 8
    pm.max_spare_servers = 24
    pm.max_requests = 1000
  • Auf den ersten Blick finde ich die Zahlen etwas hoch. Wieviele requests/m hast du denn so?


    Ich kann nachher mal in meinen configs schauen, wobei... ich habe einen pool pro Anwendung.


    Zum Thema: meine www.conf liest sich etwa # this file is intentionally blank to prevent updates from re-introducing the default pool.

    8)

    CentOS 7 / nginx / php-fpm / postfix / rspamd / clamav / dovecot / nextcloud running on RS 1000 SSDx4 G8 / VPS 500 G8 / VPS 2000 G8 Plus