Kann db_shared_buffers (0,1% des Arbeitsspeichers) und db_work_mem (0,03% des Arbeitsspeichers) nicht erhöhen

Das ist ein ziemliches Rätsel :upside_down_face:

Habe eine frisch migrierte Discourse-Instanz auf einem neuen Server.

Erhalte die Fehlermeldung in den Logs: PG::DiskFull (ERROR: could not resize shared memory segment „/PostgreSQL.1759815625“ to 8388608 bytes: No space left on device )

Es ist seltsam, denn der vorherige Server (64 GB RAM) hatte dieses Problem nicht und ich hatte diese Werte eingestellt:

db_shared_buffers: "25632MB"
db_work_mem: "160MB"

Auf dem neuen Server (128 GB RAM) kann ich die Werte nicht über die Standardwerte hinaus erhöhen (ich habe versucht, die unten stehenden Werte zu verdreifachen, und erhalte dieselbe PG DiskFull-Fehlermeldung):

db_shared_buffers: "128MB"
db_work_mem: "40MB"

Die vorherige Maschine hat Docker 27.x darauf (automatisch über den Discourse-Installer installiert). Die neue Maschine hat Docker.io gemäß den Anweisungen installiert (also 26.x). Ich habe versucht, auf Docker 27.x zu wechseln, um zu sehen, ob das damit zusammenhängt – aber es hat nichts geändert. Beide befinden sich auf dem stabilen Discourse-Zweig, Version 3.3.2.

Es scheint, als wäre shm_size der Hauptschuldige:

Ich habe jedoch keine Ahnung, warum es auf dem vorherigen Server kein Problem war und auf dem neuen Server schon. Der einzige andere Hauptunterschied ist, dass der alte Server Ubuntu 22.04 LTS verwendet und der neue Server auf 24.04 LTS läuft.

Ich habe auch dies versucht, aber die Änderungen werden überschrieben, wenn der Container erneut gestartet wird

shm_size scheint fest im Launcher kodiert zu sein:

Jede Einsicht oder Hilfe wäre willkommen! :meow_heart:

Bezieht sich auf den Festplattenspeicher, nicht auf den RAM.

1 „Gefällt mir“

Danke @pfaffman - das dachte ich anfangs auch, aber dann habe ich diesen Thread gelesen:

Es gibt auch viel freien Speicherplatz :confused:

1 „Gefällt mir“

Eine schnelle Klebebandlösung besteht darin, die Launcher-Datei wie folgt zu bearbeiten:

cd /var/discourse
vi launcher

Ersetzen Sie dann alle 3 Vorkommen von
--shm-size=512m
durch die gewünschte RAM-Menge (ich habe 50 % des Systemspeichers verwendet).

Bauen Sie dann neu. Sie müssen sie jedes Mal erneut bearbeiten, wenn der Launcher aktualisiert wird.

Scheint vorerst seinen Zweck zu erfüllen.

Wasserleck-Reparatur mit Flex Tape

1 „Gefällt mir“

Um dies zu klären, falls jemand anderes auf dieses Problem stößt – das oben Genannte hat es für mich gelöst. Ich muss die shm-size im Launcher nicht mehr bearbeiten.

Dies wurde festgestellt, nachdem diese Warnung während des Rebuilds bemerkt wurde:
WARNUNG Memory overcommit muss aktiviert sein! Ohne ihn kann ein Hintergrundspeichern oder eine Replikation unter geringen Speicherbedingungen fehlschlagen. Wenn es deaktiviert ist, kann es auch ohne geringe Speicherbedingungen zu Fehlern kommen. Siehe https://github.com/jemalloc/jemalloc/issues/1328. Um dieses Problem zu beheben, fügen Sie 'vm.overcommit_memory = 1' zu /etc/sysctl.conf hinzu und starten Sie dann neu oder führen Sie den Befehl 'sysctl vm.overcommit_memory=1' aus, damit er wirksam wird.

2 „Gefällt mir“