connect() to unix:/var/www/web10/conf/sockets/nginx-php-fcgi.sock failed

  • Hi,


    habe jetzt schon stundenlang im Netz gesucht, etliche Configs und Einstellungen angepasst, jedoch ohne Erfolg.


    Kurz zum Problem:
    Bisher laufen mehrere "web"-User auf meinem Server ohne Probleme.
    Außer einer. web10: Dieser hat mehrmals die Minute einen "502 Bad Gateway".
    Dies trat auf, nachdem dieser mehr als 12 Mio Aufrufe am Tag hatte.


    Laut den Logs sagt nginx 1.4.6
    :
    2015/04/22 01:10:23 [error] 10478#0: *3815 connect() to unix:/var/www/web10/conf/sockets/nginx-php-fcgi.sock failed (11: Resource temporarily unavailable) while connecting to upstream, client: 124.192.136.14, server: werbe-sponsor.de, request: "HEAD /b3.php?sid=220&e=1 HTTP/1.1", upstream: "fastcgi://unix:/var/www/web10/conf/sockets/nginx-php-fcgi.sock:", host: "werbe-sponsor.de"


    Im Netz finde ich zu dieser Meldung nur eine "Überlast", jedoch ist der Server bei ca. 10% CPU Last und hat eine Load_Average von 1.10 - 1.30.
    Die Datenbank der Seite habe ich extern geschaltet, da ich erst dachte, dass nginx <=> mysql einen internen "Stau" verursacht (zu langsame I/O Abfragen).
    Jedoch ohne Erfolg.
    Jetzt habe ich herausgefunden, dass es an nginx <=> php-cgi (fpm) liegt.


    Jedoch bin ich mittlerweile am Ende mit meinem Latein, denn egal wie hoch ich die Memory_Limits, Worker_Connections, Start_Server (fpm) etc setze, tut sich nichts. Auch eine Umstellung von mod_php auf FastCGI oder SuPHP ändert nichts.
    Was mich nur wundert, dass er nur max. 5 Prozesse pro web (php-cgi) öffnet, egal bei welcher Einstellung. Und ja, die Services wurden jedes Mal neugestartet.


    Ich hoffe, da kann mir jemand helfen.


    PS: Die 502-Fehler betreffen nur den "web10" und keinen anderen Kunden. Also scheint dort wohl ein Limit Probleme zu machen(?).


    Gruß
    Julian

  • Der "Bad Gateway"-Fehler tritt auf, wenn (vereinfacht gesagt) alle PHP-Instanzen voll beschäftigt sind auch auch deren Warteschlangen (Backlog) voll sind. In diesem Fall lehnen die weitere Verbindungen von NGINX ab, was dann zum "Bad Gateway" führt.
    Die Lösung ist prinzipiell recht einfach: Anzahl der PHP-Instanzen erhöhen. Das Problem ist nur, dass sich diese Option derzeit noch nicht über LiveConfig steuern lässt (ich denke wir werden das kurzfristig als weiteren Konfigurationsparameter mit aufnehmen).


    Um das vorerst mal manuell zu lösen, bearbeiten Sie die Datei /etc/nginx/sites-available/web10.conf. Am Ende der Datei steht folgende Zeile:

    Code
    # NGINX_FCGI_CHILDREN=5


    Ändern Sie die "5" in z.B. "50" und führen danach "/etc/init.d/nginx-php-fcgi restart" aus - damit sollte dieser User bis zu 50 PHP-Instanzen erhalten.


    Aber Vorsicht - dieser Wert wird wieder auf "5" zurückgesetzt, sobald was im LiveConfig im Vertrag "web10" neu gespeichert wird. Ggf setzen Sie das "+i"-Attribut (chattr +i web10.conf), damit die Datei nicht versehentlich überschrieben werden kann.

  • Hi,


    danke für die schnelle Hilfe.
    Super, hat geklappt. Läuft nun 1a! :)
    Durch die "Verzehnfachung" der php-Instanzen ist auch nicht viel mehr an Ressourcen vergeben (derzeit 6GB von 64GB belegt).
    Aber danke!
    Wäre super, wenn man das zukünftig in LiveC einstellen kann, denn mit nginx und fpm sind "lastige" Seiten deutlich schneller und haben deutlich weniger Verbrauch.
    Durch die Änderung auf 50 merkt nun auch der externe DB-Server die Last (vorher: Load_Average: 1.00, jetzt 6.50). :)


    Vielen Dank nochmal.


    Gruß
    Julian

  • Anzahl der PHP-Instanzen erhöhen. Das Problem ist nur, dass sich diese Option derzeit noch nicht über LiveConfig steuern lässt (ich denke wir werden das kurzfristig als weiteren Konfigurationsparameter mit aufnehmen).


    Ja bitte - wenn das noch der aktuelle Lösungsweg ist.

    # Das Gras wächst nicht schneller wenn man daran zieht # Bitte keine inflationären Vollzitate #

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!