Discourse-Instanz konnte nicht auf den 15. Februar 2022 aktualisiert werden

Kann mich gerade nicht neu starten, melde mich wieder, sobald ich die Gelegenheit dazu hatte. Das wird mindestens ein paar Tage dauern.

Sollte ich beunruhigt sein? Es ist in Ordnung, wenn ich mehr Ressourcen zuweisen muss.

Ja, Sie sollten beunruhigt sein.
Sie haben kaum Spielraum und es gibt auch kaum Platz für Festplatten-Caching.

Bevor Sie jedoch mehr Ressourcen zuweisen, sollten Sie herausfinden, was diese ganz außergewöhnliche Speichernutzung verursacht.

1 „Gefällt mir“

Kann im Moment nicht viel tun, ich bin unterwegs. Ich bin dieses Wochenende wieder dabei und werde auf jeden Fall versuchen herauszufinden, was los ist. Danke für den Hinweis :+1:

3 „Gefällt mir“

Es scheint, dass nur ein überfälliger Neustart dies verursacht hat. Ich konnte den Server neu starten und die Zahlen sehen jetzt viel besser aus

root@discourse:~# free
               total        used        free      shared  buff/cache   available
Mem:         3927308      977624     2246208       42880      703476     2646836
Swap:        2097148           0     2097148
2 „Gefällt mir“

Es könnte nützlich sein, wenn Sie sich wieder in einer ähnlichen Situation befinden, Discourse nach Prozessen zu fragen, die Speicher verwenden – die Ausgabe unter
https://example.com/admin/upgrade#/processes
ist nach RAM-Auslastung sortiert. Ich glaube, das zeigt nur Prozesse an, die im Container laufen. Auf der Befehlszeile könnten Sie

ps aux | sort -nr -k 4 | head -22

oder ähnliches verwenden, um die Auslastung aller Prozesse, einschließlich der in allen Containern, anzuzeigen.

Wenn ein Neustart ein Speicherknappheitsproblem löst, besteht eine gute Chance, dass irgendwo ein Prozess außer Kontrolle gerät, der (vielleicht langsam) hochfährt, bis er Probleme verursacht.

Bearbeiten: Hmm, ich sehe, dass ich erwähne, Prozesse nach RAM-Auslastung (RSS) auszulesen. Das kann nützlich sein, aber in diesem Fall sind wir eigentlich mehr an der virtuellen Speichernutzung interessiert: Wir sollten dafür nach der VSZ-Spalte, Spalte 5, sortieren.

2 „Gefällt mir“

Diese Discourse-Instanz wurde vor vielen Jahren eingerichtet, vielleicht bevor die Swapfile-Prüfung durchgeführt wurde. Ich habe diese Codezeilen manuell angewendet und die Swapfile wurde nun erstellt. Vielen Dank.

Um Docker die Swapfile nutzen zu lassen, muss ich dies anwenden? Oder vielmehr, was ist der Sinn dieser Empfehlung?

Ich habe dies gefunden, das erklärt, was vm.overcommit_memory ist, aber es ergibt für mich keinen Sinn, warum eine solche Änderung notwendig ist:

Dies hat mit dem Ausführen von Redis zu tun, nicht mit dem Upgrade von Discourse.

Ich denke, es ist mehr als das – lassen Sie mich versuchen zu erklären. Die Empfehlung kommt von Redis, und Redis empfiehlt sie, weil das Forken eines Prozesses viel virtuellen Speicher erfordert, und Redis forkt, um Hintergrundspeicherungen durchzuführen, und dennoch wird der beanspruchte virtuelle Speicher niemals benötigt werden.

Dies ist typisch für viele Unix-Anwendungen: Sie werden forken, aber sie müssen ihren Speicherbedarf nicht verdoppeln. Da dies für viele typisch ist und da es sich um eine Kernel-Einstellung handelt, die das Verhalten für alle Prozesse in allen Containern ändert, kann sie bei virtuellem Speichermangel einen Fehler in einen Erfolg verwandeln.

Auf den kleinen, günstigen Instanzen, die viele von uns verwenden, steht virtueller Speicher oft unter Druck. Und das gilt insbesondere während Upgrades oder Rebuilds.

Das Ändern dieser Einstellung kann also damit zusammenhängen, ob ein Upgrade erfolgreich ist oder fehlschlägt, insbesondere wenn es kürzlich eine Änderung gab, die die Nachfrage nach virtuellem Speicher erhöht hat.

Im Auslieferungszustand lehnt der Kernel Zuweisungen ab, die er nicht erfüllen kann. Mit dieser Anpassung akzeptiert er diese Zuweisungen, und ein Fehler kann vermieden werden, oder er tritt später auf, wenn die Zuweisung genutzt wird.

Wenn Ihre RAM- und Swap-Gesamtmenge groß genug ist, müssen Sie diese Einstellung niemals ändern. Wenn Ihre Gesamtmenge nicht groß ist, kann eine Änderung helfen.

2 „Gefällt mir“

Der Befehl free zeigt Ihnen, wie viel Swap konfiguriert ist und wie viel davon verwendet wird. Ich glaube, Sie werden feststellen, dass er sofort verwendet wird, sobald Sie diese Befehle ausgeführt haben.

Es geht darum, den verfügbaren virtuellen Speicher zu erhöhen. (Das heißt, die Summe aus RAM und Swap.) Wenn Ihnen der RAM ausgeht, treten Leistungsprobleme auf. Aber wenn Ihnen der virtuelle Speicher ausgeht, schlagen Prozesse fehl, starten nicht oder werden beendet oder getötet. Es wird brutal.

Diejenigen von uns mit wenig RAM und wenig Speicherplatz können möglicherweise nicht viel Swap hinzufügen, aber 2G scheint ein gutes Minimum zu sein. (Wenn Sie 16 GB RAM hätten, bräuchten Sie vielleicht keinen Swap, aber das ist eine andere Geschichte. Es ist die Summe der beiden, die zählt, wenn das Problem darin besteht, dass Dinge fehlschlagen.)

2 „Gefällt mir“

Aha. Ich glaube, das habe ich irgendwie verstanden, aber das ist eine sehr gute Erklärung. Deshalb habe ich das bei jeder Installation, die ich durchgeführt habe VM, die ich für Kunden erstellt habe, eingestellt.

Ich frage mich, ob wir discourse-setup diese Einstellungen ändern lassen sollten, wenn es Swap erstellt.

1 „Gefällt mir“

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.