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.
Antworten:
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
top
auf 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:
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.
quelle
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; }
quelle
Benennen Sie den Upstream in "up_example.com" um und ändern Sie ihn
Sein
quelle
$server_name
. Wenn dies das Problem wäre, würde er wahrscheinlich die ganze Zeit über Probleme haben, nicht nur manchmal, wie berichtet.