Gestern begann meine Seite plötzlich, Benachrichtigungen für alte Beiträge zu generieren. Dies ist die Anzahl der ‘posted’-Benachrichtigungen (notification_type = 9), die in den letzten Tagen mehr als eine Stunde nach der Erstellung des Beitrags erstellt wurden:
Abfrage, die ich zur Generierung der Tabelle verwendet habe
WITH pre AS (
SELECT
p.id as post_id,
to_char(n.created_at,
'YYYY-MM-DD') AS notified_day,
p.topic_id,
round(least(EXTRACT(EPOCH FROM n.created_at - p.created_at)::numeric, EXTRACT(EPOCH FROM n.created_at - p.updated_at)::numeric) / 3600) AS hours_diff,
p.created_at,
p.updated_at,
n.created_at,
u.username
FROM
notifications n
LEFT JOIN posts p ON p.post_number = n.post_number
AND p.topic_id = n.topic_id
left join users u on u.id = n.user_id
WHERE
round(least(EXTRACT(EPOCH FROM n.created_at - p.created_at)::numeric, EXTRACT(EPOCH FROM n.created_at - p.updated_at)::numeric) / 3600) > 0
AND n.notification_type = 9
ORDER BY
n.created_at DESC
LIMIT 400
)
SELECT
count(*),
notified_day
FROM
pre
GROUP BY
notified_day
ORDER BY
notified_day DESC
Hier sind einige Beispiele (aus der Ausführung der CTE in der obigen Abfrage):
Die erste hervorgehobene Zeile wurde am 8. Dezember erstellt, aber ein Benutzer, der diese Kategorie verfolgt, erhielt am 25. Dezember eine Benachrichtigung (und laut anderen Benutzern werden sie über Beiträge informiert, die sie bereits gesehen haben).
Die zweite hervorgehobene Zeile wurde am 29. September erstellt, einen Tag später geändert und am 25. Dezember benachrichtigt.
Ich habe den Container gerade neu erstellt, sodass ich die neueste Version von Discourse verwende. Vorläufig habe ich E-Mail-Benachrichtigungen deaktiviert.
Haben Sie Ideen, wie man dies troubleshooting kann? Ich gehe davon aus, dass es entweder eine Warteschlange ist, die aus irgendeinem Grund überlastet war, oder etwas Ähnliches. Gibt es eine Möglichkeit herauszufinden, was diese Benachrichtigungen generiert?


