Nachdem ich die Veröffentlichung von 3.3.0-beta1 entdeckt hatte, habe ich meine Discourse-Instanz sofort über die Weboberfläche aktualisiert.
Während des Update-Vorgangs blieben die Protokolle der Weboberfläche jedoch über fünfzehn Minuten lang ohne weitere Ausgabe stehen (ich erinnere mich, dass die letzte Ausgabe eine Reihe von wachsenden Ellipsen war? Das könnte sein, ich bin mir nicht ganz sicher). Etwa 2 Stunden später überprüfte ich den Serverstatus über die Cloud-Plattform und vermutete, dass er eingefroren war, also führte ich einen Soft-Reboot über die Cloud-Plattform durch.
Nach dem Neustart führte ich sofort ein Discourse-Backup über die Befehlszeile durch, lud das Backup und die app.yml lokal herunter und installierte dann Discourse komplett neu (natürlich die neueste Version). Danach lud ich das Backup hoch und initiierte den Wiederherstellungsprozess über die Befehlszeile.
Die Wiederherstellung war erfolgreich, aber jetzt hat mein Discourse ernsthafte Leistungsprobleme. Zuvor überschritt die CPU-Auslastung bei normaler Nutzung 10 % nicht, aber jetzt steigt sie selbst in Randzeiten auf etwa 30 %, und auch die Festplattenlesevorgänge sind relativ hoch. Was noch schlimmer ist, manchmal stürzt der Server unerklärlicherweise ab, mit Festplattenlesevorgängen von etwa 1900 pro Sekunde (das ist das Limit meines Cloud-Servers) und die CPU ist zu über 40 % im Wartezustand. Webseiten können nicht geladen werden und zeigen Verbindungs-Timeouts an. Im Moment führe ich vmstat und top aus, aber leider habe ich die Ausgabe nicht aufbewahrt. Ich erinnere mich, dass der Swap-IO fast null war, was reine Festplattenlesevorgänge anzeigte. Die Anzahl der blockierten Threads überschritt 100.
Ich vermute, dass dieses fehlgeschlagene Update möglicherweise einige Schäden verursacht hat, möglicherweise an Daten innerhalb des Backups, anstatt an der Software selbst. Gibt es eine Möglichkeit, – äh, ich bin mir nicht sicher? – einen Cache oder ähnliches zu aktualisieren oder zu löschen? Oder vielleicht… das Update erneut auszuführen? (Schließlich sind Discourse-Updates recht häufig und es kann fast jederzeit aktualisiert werden.)
Als vorübergehende Lösung habe ich einen Software-Watchdog installiert, der bei hoher Last automatisch neu startet. Dies ist jedoch letztendlich keine langfristige Lösung, und ich habe hier keine ähnlichen Probleme gefunden; offensichtlich ist es kein Problem mit der Discourse-Software selbst. Ich frage mich, wie ich das angehen kann.
Wenn Sie möchten, dass ich einige Befehle auf dem Server ausführe, um seinen Status bei hoher Last zu überprüfen, fragen Sie einfach. Ich werde mein Bestes tun, um meine SSH-Verbindung aufrechtzuerhalten und diese Daten zu erhalten, ohne neu zu starten.




