500 Interner Serverfehler auf verschiedenen Routen

Hallo,

ich versuche, wiederkehrende 500 Internal Server Errors zu debuggen.
Zunächst die Setup-Informationen (ich weiß, dass dies nicht ideal ist und nicht die empfohlene Bereitstellung mit Docker ist):

  • Discourse 2.3.8
  • Ruby 2.7.2 (über Snap)
  • Redis-Server 5:4.0.9-1ubuntu0.2 (Ubuntu-Paket)
  • PostgreSQL 10.15 (auf einem anderen Host)

Ich habe die Datei config/environments/production.rb bearbeitet, um Folgendes festzulegen:

config.log_level = :debug

Ein Beispiel für die Art von Fehler, die wir sehen (gemischt mit 200), finden Sie hier (sowie den Rest, da ich in einem Beitrag nicht mehr als zwei Links einfügen kann): Ubuntu Pastebin

Ich habe versucht herauszufinden, ob eine bestimmte Art von Anfrage die 500-Fehler verursacht, und es gibt tatsächlich ein gewisses Muster (siehe vorherigen Pastebin).

Im Moment finde ich keine Möglichkeit, weiter zu debuggen.
Ich bin mir nicht sicher, ob es sich um einen Fehler handelt, und leider habe ich keine Möglichkeit, ihn zu reproduzieren. Diese Fehler treten zufällig im Laufe des Tages zwischen 200er-Fehlern auf. Es könnte sich um ein Problem mit Sperren oder Ressourcenkonkurrenz handeln, aber ohne weitere Protokolle kann ich nicht wirklich herausfinden, wo das Problem liegt.

Hier sind die aktuell für den Prozess verwendeten Limits, falls dies das Problem ist: Ubuntu Pastebin

Jede Hilfe beim weiteren Debuggen wäre sehr willkommen.

Viele Grüße,

Discourse 2.3.8 ist sehr alt und funktioniert nicht mit einem neueren Ruby wie 2.7.2.

Wir wissen, dass Discourse 2.5.6, 2.6 und 2.7 mit Ruby 2.7.2 funktionieren.

1 „Gefällt mir“

Hallo Rafael,

vielen Dank für deine Antwort. Wir planen definitiv, bald auf die unterstützte Bereitstellungsmethode upzugraden.

Ich habe hauptsächlich versucht herauszufinden, wie man die Debug-Meldungen erhöhen kann, ohne die Datei config/environments/production.rb zu ändern.

Ich habe gesehen, dass Logster (Discourse Logging Improvements) verwendet werden könnte, aber es liefert in unserem Fall nichts Nützliches (mir fehlen hier die Sekunden, um zu sehen, ob dies mit meinem 500er-Fehler zusammenhängt) und es gibt zu viele Fehler, die wahrscheinlich auf diese Diskrepanz zwischen Ruby- und Discourse-Version zurückzuführen sind.

Ich werde noch etwas weiter recherchieren, aber ich dränge definitiv darauf, das Upgrade „bald