it-swarm.com.de

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

502 Ein fehlerhafter Gateway-Fehler wird angezeigt, wenn zwischen Websiteseiten und manchmal auf der Startseite gewechselt wird, jedoch nicht bei der ersten Anforderung auf der Startseite, wenn eine andere Seite darauf umleitet. und es passiert für einige Javascript-Dateien

lastausgleich auf zwei Upstreams konfiguriert php1 php2 beide sind Apache-Server.

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

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/"

und dies ist die Lastausgleichsserverkonfiguration

  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.

16
Mohammad Jolani

Dies ist kein Problem mit Nginx, es ist ein Problem mit Ihrem PHP Backend reagiert nicht rechtzeitig. Sie können Protokollierung zu Nginx hinzufügen, um dies zu bestätigen .

Als zweiten Bezugspunkt können Sie top auf dem Server _ und manuell überprüfen, ob PHP die CPU für bestimmte Zeiträume zuschlägt, ein weiterer Indikator für langsame Antworten.

Wenn sehr langsame Antworten von PHP für Sie 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 verlinkten Timing-Informationen untersuchen, sollten Sie in der Lage sein, herauszufinden, welche Anforderungen für die Verarbeitung von PHP) langsam sind.

Um das Problem einzugrenzen, senden Sie diese Anforderungen direkt an das PHP Backend).

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

4
Mark Stosberg

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

upstream sm_url {Server LOAD_BALANCER_DOMAIN_NAME: max_fails = 0; }}

1
user3520245