nginx: Keine Live-Upstreams während der Verbindung zum Upstream


15

502 Fehlerhafter Gateway-Fehler beim Wechseln zwischen Websiteseiten und zu bestimmten Zeiten auf der Startseite, jedoch nicht bei der ersten Anforderung auf der Startseite, wenn eine andere Seite darauf umleitet. und es passiert für einige Javascript-Dateien

Load Balancing konfiguriert auf zwei Upstreams Php1 Php2 sind beide Apache Server.

Als ich das Fehlerprotokoll überprüfte, fand ich:

no live upstreams while connecting to upstream

[error] 27212#0: *314 no live upstreams while connecting to   upstream, client: ip_address , server: example.com, request: "GET / HTTP/1.1", upstream: "http://example.com", host: "example.com", referrer: "http://example.com/mypages/"

Dies ist die Konfiguration des Lastausgleichsservers

  upstream example.com  {
    #  ip_hash;
      server php01 max_fails=3 fail_timeout=15s;
      server php02 max_fails=3 fail_timeout=15s;
    }

    server {
      listen IP:80;
      server_name example.com;
      access_log /var/log/nginx/example.com.access;
      error_log /var/log/nginx/example.com.error error;

     location / {
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_pass  http://$server_name/$uri;
        proxy_cache_bypass $cookie_nocache $arg_nocache $arg_comment;
        proxy_cache_bypass $http_pragma $http_authorization;
        proxy_no_cache $cookie_nocache $arg_nocache $arg_comment;
        proxy_no_cache $http_pragma $http_authorization;
      }

    }

Ich habe stundenlang gesucht und nichts Hilfreiches festgestellt, dass meine Streams aktiv sind und keine Probleme damit haben.


Funktionieren Ihre Upstream-Server (php01, php02)? Könnten Sie Telnet von Ngnix-Maschine zu ihnen?
Neutrinus

Sie sind verbunden.
Mohammad Jolani

Haben Sie überprüft, ob auf den Upstream-Servern genügend Prozesse ausgeführt werden, um den Datenverkehr zu verarbeiten? Sie sollten die Protokolle des Upstream-Servers überprüfen, wenn diese aus irgendeinem Grund Anforderungen ablehnen.
Tero Kilkanen

Ich habe und kein Problem mit einem Upstream-Fehlerprotokoll und kein Zugriffsprotokoll für die fehlerhaften Gateway-Anforderungen.
Mohammad Jolani

Haben Sie eine Lösung für dieses Problem gefunden?
Flickerfly

Antworten:


4

Dies ist kein Problem mit Nginx, es ist ein Problem mit Ihren PHP-Backends, die nicht rechtzeitig reagieren. Sie können Nginx die Protokollierung hinzufügen, um dies zu bestätigen .

Als zweiten Bezugspunkt können Sie topauf dem Server überprüfen, ob PHP die CPU für bestimmte Zeiträume überlastet. Dies ist ein weiterer Indikator für langsame Antworten.

Wenn sehr langsame Antworten von PHP in Ordnung sind, können Sie Nginx bitten, länger zu warten, bevor Sie aufgeben:

 # Wait 5 minutes before giving up on the backend!
 proxy_read_timeout 5m; 

Wenn Sie die Protokolle mit den oben genannten Timing-Informationen untersuchen, sollten Sie in der Lage sein, herauszufinden, welche Anforderungen von PHP nur langsam verarbeitet werden.

Um das Problem einzugrenzen, senden Sie diese Anfragen direkt an das PHP-Backend.

Abhängig davon, was gerade passiert, können Sie möglicherweise auch das Zwischenspeichern einiger Anforderungen in Nginx aktivieren, um einige langsame Anforderungen zu vermeiden.


0

Ich weiß nicht, ob es ganz dasselbe ist, aber für mich hat es funktioniert, max_fails = 0 am Ende des Servernamens hinzuzufügen

Upstream-sm_url {Server LOAD_BALANCER_DOMAIN_NAME: max_fails = 0; }


-3

Benennen Sie den Upstream in "up_example.com" um und ändern Sie ihn

proxy_pass  http://$server_name/$uri;

Sein

proxy_pass  http://up_$server_name$uri;

Obwohl unkonventionell, sehe ich kein technisches Problem bei der Verwendung von $server_name. Wenn dies das Problem wäre, würde er wahrscheinlich die ganze Zeit über Probleme haben, nicht nur manchmal, wie berichtet.
Mark Stosberg
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.