Option shm_size de Docker dans app.yml

Serait-il possible de rendre le paramètre shm_size optionnel dans app.yml ? J’ai rencontré cette erreur aujourd’hui en essayant d’exécuter une commande vacuum analyze :

ERROR: could not resize shared memory segment

Il tentait d’augmenter l’utilisation de la mémoire partagée à 1 Go, mais a échoué, car elle est limitée à 512 Mo par défaut. Ce paramètre semble être défini dans le script de démarrage, mais il serait peut-être utile de l’ajouter comme option (éventuellement commentée par défaut) dans le fichier .yml.

Vous pouvez transmettre des arguments Docker personnalisés pour remplacer ceux que nous fournissons par défaut en utilisant l’option --docker-args.

Je pense que cela ressemblera à quelque chose comme ./launcher start app --docker-args "--shm-size=1024m".

7 « J'aime »

Cela n’a malheureusement pas fonctionné lorsque je l’ai essayé. Je pense que le conteneur doit peut-être être reconstruit pour augmenter la taille de l’espace mémoire partagé ? J’ai dû modifier la valeur dans les zones codées en dur du script de lancement, puis reconstruire le conteneur pour que cela prenne réellement effet.

Cela ne persisterait probablement pas non plus lors des mises à jour/reconstructions – vous devriez le modifier manuellement à chaque fois.

1 « J'aime »

Quelles commandes avez-vous exécutées ? Vous devrez absolument reconstruire le conteneur pour que l’option --shm-size prenne effet.

2 « J'aime »

Au début, je me suis contenté d’arrêter le conteneur, puis d’exécuter la commande de démarrage du lanceur avec ce paramètre. Ensuite, j’ai modifié manuellement les paramètres --shm-size directement dans le script du lanceur et reconstruit le conteneur. La valeur a alors été ajustée correctement. Si vous écrasez le paramètre en ligne de commande pour reconstruire le conteneur, la modification ne sera-t-elle pas perdue si vous effectuez une mise à jour ou une reconstruction via l’interface /admin/upgrade ? C’est pourquoi j’ai pensé qu’il serait préférable de le définir comme un champ dans app.yml : ainsi, il persisterait lors des reconstructions et des mises à jour du code.

1 « J'aime »

Hmm, je vois que cela pourrait être utile. @sam, qu’en penses-tu ?

1 « J'aime »

Cela ne reconstruit jamais le conteneur, donc c’est sans risque.

N’avons-nous pas déjà cela, selon :

docker_args: .... dans votre fichier yaml.

Je ne suis pas sûr. Est-ce que cela écrase le fichier du lanceur lui-même ? Je vois trois endroits où l’option est codée en dur :

Nous devrions donc corriger cela, mais la correction consiste en un script bash très très complexe. N’hésitez pas à essayer.

Notre fonction d’obtention des arguments Docker devrait être responsable de la taille shm-size. Elle doit gérer les remplacements par l’utilisateur et définir une valeur par défaut.

2 « J'aime »

Salut @Ghan,

En attendant (à des fins de test, voir la mise en garde ci-dessous), vous pouvez modifier cela directement avec Docker une fois le conteneur construit, comme suit :

  • Éditez directement le fichier /var/lib/docker/containers/$CONTAINER_ID/hostconfig.json.
  • Par exemple, modifiez la valeur de ShmSize dans le fichier ci-dessus.
  • Arrêtez et redémarrez le conteneur.

Dans le fichier hostconfig de notre conteneur Docker, cela ressemble à ceci :

"ShmSize":536870912,

J’espère que cela vous aide.

Mise en garde : Certaines personnes ont signalé qu’il faut s’assurer que le service Docker est arrêté avant de modifier hostconfig.json (sinon les modifications seront écrasées). Cependant, je n’ai pas réellement testé cela. Évidemment, une solution launcher est préférable :slight_smile:

Quelqu’un sait quelle est la solution actuelle pour augmenter shm_size ?

Mise à jour : Il semble que ce soit toujours codé en dur.

Fil pertinent :