Parfois, la mémoire disponible d’un NAS Synology diminue jour après jour. Aucune tâche particulière ne semble tourner, sauf vos précieux conteneurs Docker. Au fils du temps, certains d’entre eux ont tendance à consommer de plus en plus de mémoire. Plusieurs solutions existent pour résoudre ce problème…
Redémarrage un container
C’est une astuce que j’utilise personnellement, car j’ai un conteneur qui devient gourmand après plusieurs jours. Un simple redémarrage me permet de récupérer 6 à 7 Go de mémoire ! C’est une application bien connue, essentielle à toute la famille : Immich.
Déterminer ce qui consomme le plus
La première chose à faire, c’est d’identifier quelle application prend le plus de place en mémoire. Le plus simple, c’est de passer par le Moniteur de ressources (via le menu principal).
Une fois lancé, vous arrivez dans Performances. Dans le menu de gauche, sélectionnez le Gestionnaire des tâches puis l’onglet Processus. Enfin, cliquez 2 fois sur la colonne Mémoire privée (pour trier en ordre décroissant).
Cette colonne permet de trouver ce qui consomme le plus sur votre NAS. Cela peut être une application native de Synology, un paquet téléchargé ou encore un conteneur Docker.
Confirmer au niveau Projet/Conteneur
Continuons avec le projet Immich, ce dernier est composé de plusieurs conteneurs : server, redis, postgres et machine learning. Pour confirmer lequel consomme le plus dans Immich, ouvrez Container Manager puis dans le menu de gauche allez sur Projets et recherchez l’application concernée. Cliquez dessus et allez dans l’onglet Statistiques. Par défaut, l’affiche est sur CPU… on clique sur RAM pour voir la consommation.
Si votre conteneur ne fait pas partie d’un projet (conteneur seul), allez dans le menu de gauche Conteneur, sélectionnez le et allez sur l’onglet Statistique.
Redémarrer un conteneur docker manuellement
Pour redémarrer un conteneur, il existe plusieurs solutions. La plus simple consiste à passer par l’interface de Container Manager. Sélectionnez le menu Conteneur à gauche, puis le conteneur concerné (ou via un clic droit). Cliquez sur le bouton Action (en haut à droite), puis sélectionnez Redémarrer.
A noter qu’il est possible de redémarrer tout un projet en allant sur ce dernier et en cliquant sur le bouton Action puis Redémarrer.
Automatisation du redémarrage
Il existe une autre possibilité, c’est de passer par le Planificateur de tâches pour redémarrer automatiquement un conteneur, par exemple 1 fois par semaine. Cependant, il y a une contrainte et un inconvénient à cela.
Il faudra vous s’assurer que le redémarrage ne va pas gêner un utilisateur qui envoi des documents ou visionne une vidéo (sur Jellyfin). Vous choisirez donc un horaire sûr (ex : 5h du matin).
L’inconvénient, c’est que cela va générer une notification d’arrêt dans DSM… et selon vos paramètres, une notification par e-mail ou via l’application mobile.
Redémarrer 1 fois par semaine
Allez dans Panneau de configuration > Planificateur de tâche puis cliquez sur le bouton Créer > Tâche planifiée > Script défini par l’utilisateur. Donnez un nom personnalisé à la tâche (sans caractères spéciaux ni accent), choisissez root au niveau d’utilisateur. Ensuite, allez ensuite sur l’onglet Programmer et en face de Répéter, vous choisirez Toutes les semaines… juste au-dessous, vous (dé)sélectionnerez le jour souhaité.
Dans l’exemple ci-dessus, la tâche sera répétée tous les dimanches à 5h du matin. Allez sur l’onglet Paramètres de tâche et dans le grand encart Script défini par l’utilisateur (tout en bas) saisissez : docker restart NOM_DU_CONTENEUR Pour notre exemple initial, ce sera docker restart immich_server et pour Jellyfin (un autre exemple) ce serait docker restart jellyfin. Pour finir, vous cliquerez sur le bouton OK et vous confirmerez avec le mot de passe de votre compte.
Mode expert
Pour un projet complet, c’est également possible mais plus complexe. Il y a deux possibilités avec une complexité différente. La première, il faut se déplacer dans le dossier du projet cd /volume1/docker/Immich et la commande docker compose restart immich. L’autre possibilité, c’est la commande plus complète docker compose -f /volume1/docker/Immich/compose.yaml restart immich. Ici, il faut récupérer le nom du fichier yaml/yml exact et le nom du projet.
En synthèse
Nous avons vu comment rechercher une application Docker qui consomme trop de mémoire vive et confirmer le nom du conteneur concerné. Puis nous avez vu les différentes techniques pour le redémarrer. Passer par le Planificateur de tâches n’est pas des plus conventionnelle, mais elle a le mérite d’être efficace.
Une autre solution consiste à redémarrer complètement votre NAS… c’est tout aussi efficace pour libérer la mémoire (pas uniquement des conteneurs). Cependant, un redémarrage complet demande parfois plusieurs longues minutes, contre une à deux secondes pour un conteneur.






