502-Fehler beim Umbenennen großer Kategorien (nach Themaanzahl)

Hallo.
Ich habe dies auch hier veröffentlicht: Moving posts returns 502 bad gateway - #63 by Canapin
aber es scheint, dass der Fehler auch in anderen Kontexten auftritt. Ich kann eine Kategorie nicht umbenennen:

JS-Konsole:

Das gleiche passiert im abgesicherten Modus (ich habe ohnehin keine benutzerdefinierten Themes oder Plugins, außer data-explorer), Version 2.6.0.beta2
Mein Server läuft unter Ubuntu 18, verfügt über 4 vCPU, 8 GB RAM und 160 GB Festplattenspeicher.

3 „Gefällt mir“

Braucht es lange, bis der Fehler auftritt? Ich denke, du stößt aufgrund einer schweren Abfrage auf ein Timeout.

1 „Gefällt mir“

Vielleicht 20–30 Sekunden? Außerdem tritt das Problem beim Umbenennen anderer Kategorien nicht auf. :thinking:

Edit: Tritt auch auf meinem Entwicklungsf-Forum auf (ziemlich leistungsstarker Rechner mit Ubuntu-Subsystem).

Re-Edit:

  1. Das Aufteilen in kleinere Batches scheint zu funktionieren. Discourse scheint also Probleme damit zu haben, mehr als 3000 Themen zu verschieben, selbst auf einem leistungsstärkeren Server (ich habe auf 16 vCPU / 32 GB hochgerüstet). Ich vermute daher, dass dieses Problem etwas anderes ist als das Umbenennen meiner Kategorien. Das Umbenennen der Kategorie ist mir dennoch nicht gelungen.

  2. Ich habe eine neue Kategorie B erstellt (die ich nach Belieben umbenennen kann), alle Themen aus Kategorie A (die ich nicht umbenennen kann) in Kategorie B verschoben: Danach kann ich Kategorie B nicht mehr umbenennen, dafür aber Kategorie A.
    Ich habe versucht, meine Kategorien umbenennen, indem ich jedes Mal eine Kategorie mit mehr Beiträgen auswählte. Kategorien mit mehr Inhalten (mehr Beiträge, größere Themen) scheinen länger zum Umbenennen zu benötigen.

Es gibt zwei Kategorien, die ich nicht umbenennen kann (es scheint wirklich zu lange zu dauern…):

Ich kann „Öffentliche Profilnachrichten

30 Sekunden sind das Nginx-Timeout, das ergibt also Sinn. Es braucht einfach etwas mehr Zeit als das.
Wenn ich du wäre, würde ich das über eine Rails-Konsole versuchen.

Ich habe gedacht, man macht es so, war mir aber nicht sicher, ob das sicher ist: Ich frage mich, warum es so lange dauert, nur einen Kategoriennamen in Discourse zu ändern :thinking:
Muss es Dinge prüfen, an die ich nicht denke?

Offenbar :slight_smile:
Ich vermute, es berechnet einige Statistiken neu. Du könntest eine Verbindung zu Postgres herstellen und folgenden Befehl ausführen:

SELECT pid, age(query_start, clock_timestamp()), usename, query 
FROM pg_stat_activity 
WHERE query != '<IDLE>' AND query NOT ILIKE '%pg_stat_activity%' 
ORDER BY query_start desc;

um zu sehen, was so lange dauert.

Vielen Dank!
Ich bin damit jedoch nicht vertraut. Sollte ich diese Abfrage ausführen, während Discourse versucht, den Kategorienamen zu ändern?

Ja, es zeigt dir die aktuell laufenden Abfragen an, also solltest du es während des Wartens ausführen. Du hast 30 Sekunden :wink:

2 „Gefällt mir“

Ich habe die Abfrage etwa 10 Sekunden nach dem Versuch, den Kategoriennamen zu ändern, ausgeführt, und hier ist das Ergebnis:

Ich sehe nichts Auffälliges? :thinking:

Ich sehe eine sehr triviale Abfrage (UPDATE categories...), die bereits 13 Sekunden dauert…
Was passiert, wenn Sie sie manuell ausführen?

EDIT: Falls es sich um ein importiertes Forum handelt, könnte es helfen, ein Backup zu erstellen und es anschließend wiederherzustellen.

Da ich dasselbe Problem auf meiner lokalen Entwicklungsumgebung auf meinem Heimcomputer habe, habe ich es auf meinem Dev-Forum versucht.

Ich habe versucht, den Kategorienamen über die Discourse-Oberfläche zu ändern. Der in meinem ersten Beitrag gezeigte Fehler trat auf, und mein RAM wurde voll:
image

Ihre Abfrage zeigt:

Ich habe versucht, es über die Rails-Konsole zu aktualisieren und diese beiden Befehle ausprobiert:

ActiveRecord::Base.connection.execute("UPDATE categories SET name = 'General Discussion', topic_template = '', sort_order = '', default_view = '', read_only_banner = '', name_lower = 'general_discussion', updated_at = '2020-09-16 13:36:50.014192' WHERE categories.id = 21")
Category.where(id: 21).update(name: "General")

Beide haben einwandfrei funktioniert.

Das ist… interessant… :thinking:

Update: Ich habe versucht, eine Kategorie auf meinem anderen, live Forum umzubenennen (andere Daten/Server/Betriebssystem usw., aber dieselbe Discourse-Version).

Das Ändern eines Kategoriennamens ist langsam (~10 s). Ich habe es mehrfach versucht und dabei auch einmal einen 502-Fehler erhalten.

Ich habe das Gefühl, dass dies ein Problem von Discourse ist, möglicherweise im Zusammenhang mit einem kürzlich durchgeführten Update? :thinking:
Beide Foren nutzen Version 2.6.0.beta2.

Könnte jemand versuchen, einen Kategoriennamen (eine Kategorie mit Tausenden oder Zehntausenden von Themen) auf seinem eigenen Forum mit derselben Discourse-Version zu ändern, um zu prüfen, ob dies langsam ist oder einen 502-Fehler auslöst?

2 „Gefällt mir“

Hat das Umbenennen von Kategorien mit einer großen Anzahl von Themen in früheren Discourse-Versionen bei dir schnell funktioniert?

Ich erinnere mich nicht daran, auf meinem vorherigen Forum (das ebenfalls importiert wurde) einen 502-Fehler gehabt zu haben, aber ich habe seit dem Import vor 3 Jahren keine Kategorie mehr umbenannt. Ich weiß nicht mehr, ob das Umbenennen einer Kategorie langsam war.
Was mein neues, größeres Forum betrifft: Es wurde auf der Discourse-Version importiert, die ich erwähne, daher kann ich keinen Vergleich mit einer älteren Version anstellen.

1 „Gefällt mir“

Nur eine Korrektur dazu: Ich glaube, ich habe zuvor Category.where(id: 21).update(name: "General") für eine Kategorie ausgeführt, aus der ich die Themen entfernt oder ähnliches gemacht habe, da ich diesen Befehl gerade mehrfach bei verschiedenen Kategorien verwenden musste. Es scheint, dass die Dauer des Befehls proportional zur Anzahl der Beiträge in der Zielkategorie ist.
Im Grunde ist es also dasselbe Problem wie beim Aktualisieren der Kategorie über die Oberfläche, nur dass es in der Kommandozeile nicht zu einem Timeout kommt.

Bei einer Kategorie mit mehr als 30.000 Themen dauerte es vielleicht eine Minute, bei einer mit mehr als 15.000 Themen etwa 30 Sekunden, und bei Kategorien mit wenigen Themen war es schnell.

1 „Gefällt mir“

Unser Forum ist in den letzten 6 Monaten zunehmend fehleranfällig geworden. Ich habe gerade die Serverressourcen verdoppelt (16 CPUs, 64 GB RAM), und obwohl es nun deutlich besser läuft, habe ich einen reproduzierbaren Fehler festgestellt.

Der Versuch, eine Kategorie umzubenennen, führt jedes Mal zu einem 502-Fehler.

2 „Gefällt mir“

Hast du die Einstellungen in der app.yml entsprechend angepasst?

Du solltest in den Logs nachsehen, ob du einen Hinweis findest. Gibt es etwas Besonderes an dieser Kategorie? Vielleicht hast du eine Datenbankindex-Korruption?"}

2 „Gefällt mir“

Ja!

Meinst du damit einfach, dass man unter forumwebsite.com/logs nachsieht? Ich sehe keine Fehler, die sich spezifisch auf das Umbenennen einer Kategorie beziehen.

Ich sehe viele Einträge in „Info“, aber wiederum nichts Spezifisches für diese Aktion.

Sollte ich versuchen, irgendeinen Fehler zu beheben?

2 „Gefällt mir“

Du kannst im Webinterface unter /admin/logs (oder so ähnlich) nachsehen und etwas wie

tail -f /var/discourse/shared/standalone/logs/rails/production.log

Das ist aus dem Gedächtnis und mit den Fingern getippt, daher empfehle ich dir, die Tab-Vervollständigung zu nutzen. :slight_smile:

4 „Gefällt mir“