500 – Wie Nginx 5xx-Fehler reduziert
为情所困
为情所困 2017-05-16 17:20:56
0
2
724

nginx-Frontend, das Back-End besteht aus n Docker-Containern und der Docker-Container ist nginx+php-fpm. Es ist bekannt, dass jeder Container ausfallen kann, wenn der Container ausfällt Fehler, und im Front-End kommt es gelegentlich zu Netzwerkverzögerungen

Aktuelle Praktiken und Probleme

nginx-Frontend verwendet Tengine und aktiviert die Gesundheitsprüfung

  1. Angenommen, das Intervall ist auf 3 Sekunden eingestellt und der Fall ist 2, dann wird die Anfrage, wenn das Backend unmittelbar nach der letzten Prüfung aufhängt, noch für fast 6 Sekunden an das fehlerhafte Backend weitergeleitet

  2. Angenommen, das Timeout ist auf 1 Sekunde eingestellt. Wenn das Front-End-Netzwerk verzögert ist, kommt es bei allen Back-Ends sofort zu einem Timeout und 502 wird direkt an den Benutzer zurückgegeben. Wenn Sie jedoch den Timeout-Wert erhöhen, macht die Gesundheitsprüfung keinen großen Sinn, da das Backend innerhalb von 1 Sekunde nicht mehr herausfiltern kann

  3. Der Backend-Docker verwendet tengine und aktiviert das Sysguard-Modul

    Wie oben: Wenn es innerhalb des Intervalls abstürzt, kommen immer noch einige Anfragen am Backend an. Wenn die Backend-Auslastung häufig am Schwellenwert schwankt, können 5xx-Fehler höher sein als ohne Gesundheitsprüfung und Sysguard.
  1. Gibt es eine Lösung?
为情所困
为情所困

Antworte allen(2)
漂亮男人

不知道你的前端应用场景是怎么样的,貌似负载很高的样子,不太可能直接暴露错误给用户吧,大不了提示用户稍后再试下,这深入研究还是得看看什么技术架构,从根上找问题

曾经蜡笔没有小新

个人感觉这东西是避免不了的 负载大了就优化程序或者增大集群 该出的错误还是要出 只不过写个含糊的名字就可以了
淘宝也经常系统忙 知乎没事还自己给自己服务器提问呢

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage