Themen laden langsam oder gar nicht, wenn sie viele Antworten haben und der Benutzer Lesezeichen darin gesetzt hat

Wir haben seit geraumer Zeit ein wiederkehrendes Problem auf unserem Discourse-Forum, das wir endlich eingrenzen und zuverlässig reproduzieren konnten.

Hier sind die Schritte zur Reproduktion:

  1. Ein Thema mit Tausenden von Antworten vorhanden ist.

  2. Einen Beitrag in diesem Thema markieren.

  3. Das Thema öffnen.

Das Thema lädt nun sehr lange. In einigen Fällen führt dies zu einem Timeout, und wir erhalten stattdessen einen Nginx-Fehler (502 Bad Gateway).

Hier sind einige ungefähre Ladezeiten von unserem Forum:

  • Bei einem Thema mit etwa 1.000 Antworten beträgt die zusätzliche Ladezeit nach dem Erstellen eines Lesezeichens einige Sekunden. Das ist spürbar, aber kein großes Problem.

  • Bei einem Thema mit etwa 4.000 Antworten beträgt die Ladezeit normalerweise 20–30 Sekunden, und es kommt manchmal zu einem Timeout, statt dass die Seite erfolgreich geladen wird.

  • Bei einem Thema mit über 9.000 Antworten führt es in den meisten Fällen zu einem Timeout. In einigen Fällen wird es geladen, aber erst nach mehr als 30 Sekunden.

Beachten Sie, dass diese Themen problemlos laden, wenn keine Lesezeichen darin vorhanden sind. Das Problem tritt nur bei Benutzern auf, die Lesezeichen in einem bestimmten Thema haben, und sobald sie das Lesezeichen entfernen, lädt das Thema wieder normal.

5 „Gefällt mir“

Ich konnte dein Problem bei Themen mit 30.000 und 10.000 Antworten in meinem Forum nicht nachstellen. :man_shrugging:

4 „Gefällt mir“

Wenn es nicht allzu umständlich ist, könntest du beim Setzen des Lesezeichens im zweiten Schritt der Reproduktionsbeschreibung einen zeitgesteuerten Erinnerungshinweis einrichten und prüfen, ob sich etwas ändert? Genau das hat bei mir schließlich zur Reproduzierbarkeit geführt (in meinem Fall speziell das Setzen einer Erinnerung für „Montag“).

Dadurch begann meine .json-Anfrage im Zusammenhang mit der ID des gebookmarkten Beitrags, nach 30 Sekunden Wartezeit eine 302-Antwort zu liefern, wie im folgenden Bild zu sehen ist. (Dies tritt auf, wenn ich auf den Lesezeichen-Link in meinem Profilmenü klicke.)

Zufällig habe ich auch bemerkt, dass Suchanfragen ein ähnliches Verhalten zeigen, wobei sie sich zwar nur extrem verlangsamen, sobald man nach irgendetwas in irgendeinem Unterforum sucht – einschließlich solcher, die überhaupt keine gebookmarkten Beiträge enthalten:

[Redigiertes Bild langsamer Suchanfragen aus den Chromium-Entwicklertools, da nur 1 Embed erlaubt war]

Aus anderen Erfahrungen heraus riecht das für mich nach einer Art SQL N+1-Problem, aber ich bin weder im Discourse-Code noch in Ruby selbst gut genug bewandert, um zu wissen, ob sich vielleicht ein zyklisches JSON-Modell oder Ähnliches auf dieselbe Weise äußern würde.

3 „Gefällt mir“

Kannst du das nachstellen, @martin?

2 „Gefällt mir“

Danke für die Meldung. Ich werde versuchen, das Problem zu reproduzieren und diese Woche zu beheben.

2 „Gefällt mir“

Dies wurde in folgendem Commit behoben:

cc @Macaw, der dieses verwandte Thema erstellt hat: Bookmarking a Post on a Large Topic creates Absurd Loading Times

6 „Gefällt mir“