PG::ConnectionBad führt zu vorübergehendem Absturz der Seite

In den Fehlerprotokollen erhalte ich intermittierend folgende Fehler. Dadurch ist die Website für 15–30 Sekunden nicht erreichbar, bis sie wieder verfügbar ist.

Info-Fehlermeldung:

PG::ConnectionBad (FATAL: Das Datenbanksystem befindet sich im Wiederherstellungsmodus) /var/www/discourse/vendor/bundle/ruby/2.6.0/gems/pg-1.2.3/lib/pg.rb:58:in `initialize’

Umgebungs-Fehlermeldung:


Eine wirklich seltsame Sache, die mir beim Betrachten dieser Protokolle aufgefallen ist, ist, dass anscheinend nach dem Ordner unter /var/www/… gesucht wird, aber dieser Ordner existiert auf dem Server nicht. Sollte er existieren? Jede Hilfe wird geschätzt.

Wenn die Datenbank defekt ist, ist die Website zwangsläufig ebenfalls defekt. Sie müssen herausfinden, warum. Die häufigsten Gründe sind ein Mangel an RAM und Festplattenspeicher. Meine Vermutung ist RAM. Wie viel RAM haben Sie? Was gibt free -h aus?

Das ist der Pfad innerhalb des Containers. Wenn Sie ./launcher enter app ausführen, werden Sie ihn dort sehen.

Ich denke, du hast recht. Hier ist die Ausgabe von free -h.

image

131M frei scheinen mir nicht viel zu sein.

Nun, du hast 646 MB verfügbar, und 4 GB sind in der Regel ausreichend, sodass ein Swap-Bereich normalerweise nicht empfohlen wird. Wie groß ist deine Datenbank? Wie viel Traffic hast du? Läuft auf dem Server noch etwas anderes außer Discourse?

Auf dem Server läuft nichts außer Discourse.

Um die Größe zu ermitteln, habe ich Folgendes ausgeführt:

./launcher enter app
rails db
SELECT pg_size_pretty(pg_database_size(current_database()));

Die Ausgabe betrug 4650 MB (1 Zeile).

Was den Traffic betrifft:
Gestern hatten wir 1.200 Seitenaufrufe, in der letzten Woche 12.400. In der letzten Woche gab es etwa 160 Nutzer und rund 80 gleichzeitige Nutzer zu jedem beliebigen Zeitpunkt.

Wenn Sie eine freie Festplatte haben, fügen Sie Swap hinzu, um sich etwas temporären Spielraum zu verschaffen.

Ich habe dort 1 GB Swap-Speicher hinzugefügt. Wir werden sehen, was bei dem starken Verkehr heute Abend passiert.

image

Du bist der Beste. Der 1 GB Swap hat anscheinend alle Absturzprobleme behoben. Ich bin ehrlich froh, dass es ein RAM-Problem und kein Datenbankproblem war. Ich werde am Wochenende die RAM-Menge auf dem Server erhöhen. Vielen Dank an alle, die in diesem Thread geholfen haben!

Führe nach der Änderung discourse-setup erneut aus, damit die Speicherparameter zurückgesetzt werden.

Ich bin neugierig, ob sie von Anfang an richtig abgestimmt waren. :man_shrugging:t2:

Ehrlich gesagt bin ich mir nicht sicher. Davor hatten wir nach einer Hardwareänderung vor einiger Zeit einen Neuaufbau und einen Server-Neustart durchgeführt. Ich gehe davon aus, dass nach einem Neustart alle Systemänderungen von Discourse erkannt worden wären.

Nach der Installation der Swap-Datei wurde zeitweise mehr als 4 GB „Speicher“ verwendet, sodass dies definitiv das Problem in unseren Spitzenzeiten war, was mit den Zeiträumen übereinstimmt, in denen der Server abgestürzt ist. Wir haben heute ein Upgrade durchgeführt, und die Seite läuft jetzt sehr gut.

Aber das ist nicht der Fall. Es gibt Einstellungen, die beispielsweise steuern, wie viel RAM die Datenbank nutzen darf, die in app.yml eingebettet sind. Sie können diese manuell bearbeiten oder discourse-setup erneut ausführen.

Ich habe die Funktion discourse-setup heute erneut ausgeführt, da mir das vorher nicht bekannt war. Es war neu für mich.