suchen

Heim  >  Fragen und Antworten  >  Hauptteil

500 – Wie Nginx 5xx-Fehler reduziert

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?
为情所困为情所困2755 Tage vor715

Antworte allen(2)Ich werde antworten

  • 漂亮男人

    漂亮男人2017-05-16 17:22:56

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

    Antwort
    0
  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-05-16 17:22:56

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

    Antwort
    0
  • StornierenAntwort