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.
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.
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.
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.
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 :
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