Ich habe Discourse kürzlich von Version 3.4.0.beta1 auf 3.4.0.beta3 aktualisiert. Nach dem Update stellen wir fest, dass die Speichernutzung des Forums allmählich zunimmt, was zum Absturz der Anwendung führt. Bei der Überprüfung des Servers können wir sehen, dass der redis-server 95 % des Speichers verbraucht.
Wir führen täglich redis-cli flushall aus, um das Problem vorübergehend zu beheben. Die Discourse-Instanz wird in Docker gehostet.
Ich habe versucht, auf die vorherige Version zurückzustufen, aber dies führte beim Wiederaufbau zu einigen Fehlern.
Eine weitere Sache ist, dass ich unter /sidekiq/scheduler/history feststellen kann, dass Jobs::Chat::EmailNotifications immer noch über einen längeren Zeitraum laufen
Als temporäre Lösung habe ich ein kleines Bash-Skript erstellt, um den Redis-Speicher zu bereinigen und es so einzurichten, dass es jeden Tag um 6 Uhr morgens über einen Cron-Job ausgeführt wird.
Hinweis: Ich speichere das Protokoll in /home/ubuntu/logs. Sie können es ignorieren, wenn Sie es nicht benötigen.
#!/bin/bash
# Verzeichnis und Dateiname für Protokolle festlegen
LOG_DIR="/home/ubuntu/logs"
LOG_FILE="$LOG_DIR/redis.cleanup.$(date +\%Y-\%m-\%d).log"
# Sicherstellen, dass das Protokollverzeichnis existiert
mkdir -p "$LOG_DIR"
# Informationen über die aktuelle Umgebung (Host-Seite) protokollieren
echo "Skript wird ausgeführt um $(date)" >> "$LOG_FILE"
# Den Discourse-Launcher in der App ausführen und die Ausgabe in die Protokolldatei schreiben (Host-Seite)
echo "redis cleanup command" >> "$LOG_FILE"
docker exec app redis-cli flushall >> "$LOG_FILE" 2>&1
# Anzeigen, dass das Skript abgeschlossen ist (Host-Seite) und beenden
echo "Skript erfolgreich abgeschlossen um $(date)" >> "$LOG_FILE"
exit 0
Update: Es scheint, als wäre es automatisch behoben worden. Jetzt, wo ich mich erinnere, hatten wir ein ähnliches Problem, als wir die Version aktualisiert haben, und der Speicher stieg immer wieder an, aber es hat sich nach einer Weile von selbst behoben. Es scheint, als wäre das ein Fehler.
122M enqueued jobs zeigt definitiv, dass etwas nicht stimmt
Wie viele Benutzer haben Sie in Ihrem Discourse?
Wie viele #chat-Kanäle gibt es?
Wie viele Benutzer befinden sich in Ihren TOP 3 größten Chat-Kanälen?