Impossible d'augmenter db_shared_buffers (0,1 % de la RAM totale) et db_work_mem (0,03 % de la RAM totale)

C’est un peu déroutant :upside_down_face:

J’ai une instance Discourse fraîchement migrée sur un nouveau serveur.

Je reçois l’erreur dans les logs : PG::DiskFull (ERROR: could not resize shared memory segment \"/PostgreSQL.1759815625\" to 8388608 bytes: No space left on device )

C’est étrange car le serveur précédent (64 Go de RAM) n’avait pas ce problème et j’avais configuré ceci :

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

Sur le nouveau serveur (128 Go de RAM), je ne peux pas augmenter au-delà des valeurs par défaut (j’ai essayé de tripler les valeurs ci-dessous et j’obtiens la même erreur PG DiskFull) :

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

La machine précédente a Docker 27.x (installé automatiquement via l’installeur Discourse). La nouvelle machine a installé docker.io conformément aux instructions (donc 26.x). J’ai essayé de passer à Docker 27.x pour voir si c’était lié, mais cela n’a rien changé. Les deux sont sur la branche Stable Discourse, version 3.3.2.

Il semble que shm_size soit le principal coupable :

Bien que je ne comprenne pas pourquoi ce n’était pas un problème sur le serveur précédent et qu’il le soit sur le nouveau. L’autre principale différence est que l’ancien serveur utilise Ubuntu 22.04 LTS et le nouveau serveur est sur 24.04 LTS.

J’ai aussi essayé ceci, mais les modifications sont écrasées lorsque le conteneur est redémarré.

shm_size semble être codé en dur dans le lanceur :

Toute idée ou aide serait appréciée ! :meow_heart:

Fait référence à l’espace du disque dur, pas à la RAM.

1 « J'aime »

Merci @pfaffman - j’ai pensé la même chose au début, mais ensuite j’ai lu ce fil de discussion :

Il y a aussi beaucoup d’espace libre :confused:

1 « J'aime »

Une solution rapide avec du ruban adhésif consiste simplement à modifier le fichier launcher comme suit :

cd /var/discourse
vi launcher

Remplacez ensuite les 3 occurrences de
--shm-size=512m
par la quantité de RAM souhaitée (j’ai choisi 50 % de la RAM système).

Puis reconstruisez. Il faudra le modifier à nouveau chaque fois que le launcher sera mis à jour.

Cela semble faire l’affaire pour le moment.

water leaking fix with flex tape

1 « J'aime »

Pour faire suite au cas où quelqu’un d’autre rencontrerait ce problème, ce qui précède l’a résolu pour moi. Je n’ai plus besoin de modifier shm-size dans le lanceur.

Cela a été découvert après avoir remarqué cet avertissement lors de la reconstruction :
AVERTISSEMENT La sur-allocation de mémoire doit être activée ! Sans elle, une sauvegarde en arrière-plan ou une réplication peut échouer dans des conditions de faible mémoire. Étant désactivée, elle peut également causer des échecs sans condition de faible mémoire, voir https://github.com/jemalloc/jemalloc/issues/1328. Pour résoudre ce problème, ajoutez 'vm.overcommit_memory = 1' à /etc/sysctl.conf, puis redémarrez ou exécutez la commande 'sysctl vm.overcommit_memory=1' pour que cela prenne effet.

2 « J'aime »