Accueil
» Comment faire
»
Augmenter la limite de mémoire du conteneur CODE sans deviner
Augmenter la limite de mémoire du conteneur CODE sans deviner
Pour allouer plus de mémoire à un conteneur Collabora Online CODE, augmentez la limite Docker dans la configuration qui le crée, puis recréez le conteneur et vérifiez la limite effective avec ` docker ps` ou `docker docker inspectps` docker stats. L'augmentation d'un paramètre d'application n'augmente pas la limite de mémoire du conteneur Docker, et la machine virtuelle hôte ou Docker Desktop doit disposer de suffisamment de mémoire pour prendre en charge une limite plus élevée.
Exemple hypothétique utilisé tout au long de ce document : Riley administre un déploiement Docker Compose sur un seul hôte. Supposons docker statsque la limite soit de 2 Gio et que l’utilisation soit proche de cette limite lorsque plusieurs documents sont ouverts. Riley envisage une limite de 4 Gio. Ces chiffres ne sont donnés qu’à titre d’exemple et ne constituent en aucun cas une recommandation de dimensionnement pour Collabora, une garantie de performance ou un résultat de test ; votre limite doit être déterminée en fonction de la charge observée et de la capacité de l’hôte.
1. Vérifiez que le récipient touche bien son bouchon.
Exécutez ces commandes sur l'hôte Docker, en remplaçant collaborapar le nom réel du conteneur :
docker statsL'outil d'inspection affiche l'utilisation actuelle et la limite du conteneur. Il indique la limite de mémoire configurée en octets et précise si Docker enregistre l'arrêt du conteneur pour cause de mémoire insuffisante (OOM). Une valeur élevée 0signifie que Docker n'a pas de limite stricte explicite pour ce conteneur ; cela ne signifie pas que la machine dispose d'une RAM illimitée. Une valeur élevée à elle seule ne prouve pas un incident de mémoire insuffisante ; il est donc conseillé de la comparer avec l'historique des redémarrages, les journaux et les dates et heures auxquelles les utilisateurs ont constaté des erreurs.
Exemple de diagnostic hypothétique : le conteneur CODE approche de sa limite configurée de 2 Gio.
Avant d'augmenter la limite, vérifiez la quantité de RAM disponible pour le système d'exploitation et les autres services. Les recommandations de Docker concernant les ressources préconisent de tester la demande de l'application et d'exécuter les conteneurs sur des hôtes disposant de ressources suffisantes. Avec Docker Desktop, consultez également Paramètres > Ressources : la mémoire allouée à la machine virtuelle Docker constitue une limite distincte partagée par ses conteneurs. Augmenter la limite de CODE au-delà de cette allocation ne peut pas libérer de mémoire physique supplémentaire ; consultez les paramètres de ressources de Docker Desktop .
2. Modifier la limite du service Compose
Modifiez le service CODE existant dans votre fichier Compose. Conservez son étiquette d'image, ses ports, son environnement, ses volumes, ses réseaux et sa politique de redémarrage actuels ; ajoutez ou mettez à jour uniquement le paramètre de mémoire. Pour l'exemple hypothétique de 4 Gio de Riley :
Exemple de composition : définir la limite de mémoire au niveau du service tout en conservant l’étiquette d’image CODE déployée.
Cet exemple utilise l'image Docker officielle CODE de Collabora ; conservez l'étiquette déjà utilisée par votre déploiement. mem_limitIl s'agit d'une limite maximale, et non d'une réservation : Docker peut autoriser le conteneur à utiliser jusqu'à cette quantité de RAM, mais ce paramètre ne réserve pas autant de RAM sur l'hôte. La documentation du service Docker Compose définit cette limite mem_limitet précise qu'elle doit correspondre à la limite maximale deploy.resources.limits.memorysi les deux sont présentes. Si votre déploiement utilise un orchestrateur ou un fichier Compose géré par la plateforme, utilisez le champ de ressources pris en charge par cette plateforme et assurez-vous que les valeurs de limite des doublons restent cohérentes.
Si vous avez lancé CODE directement avec `docker run` docker run, recréez-le à partir de la commande d'origine avec `docker run` --memory=4get conservez toutes ses options actuelles. Pour une modification rapide à l'exécution d'un conteneur Linux existant, Docker prend également en charge ` docker docker update --memory 4g <container_name>run`. Considérez le fichier Compose ou la commande d'exécution d'origine comme la source de référence afin qu'un remplacement ultérieur ne rétablisse pas les anciennes capacités. Consultez la documentation sur la mise à jour des conteneurs Docker .
3. Recréez le code pour que la limite enregistrée soit prise en compte.
Depuis le répertoire contenant le fichier Compose actif, validez la configuration fusionnée, puis recréez uniquement le service CODE :
docker compose config
docker compose up -d --no-deps --force-recreate collabora
Utilisez la clé de service de votre fichier à la place de celle indiquée collabora. Vérifiez la configuration rendue pour la nouvelle limite avant de l'appliquer. La recréation du code interrompt brièvement les sessions d'édition qui dépendent de ce conteneur ; planifiez donc la modification lorsqu'une courte interruption de service est acceptable. Ne supprimez pas de volumes et n'exécutez pas la commandedocker compose down -v ; ces opérations sont inutiles pour une modification de limite de mémoire et peuvent supprimer des données persistantes appartenant à d'autres services.
Appliquez la configuration Compose modifiée et recréez uniquement le service CODE.
4. Vérifiez le nouveau condensateur et son comportement sous charge.
Une fois le service rétabli, vérifiez le conteneur lui-même, et pas seulement le fichier YAML :
Pour la valeur d'exemple 4g, la sortie de l'inspection devrait représenter environ 4 Gio en octets et docker statsafficher une limite proche de cette valeur. L'image ci-dessous utilise un exemple de sortie à titre d'illustration uniquement. Observez ensuite le code lors de l'ouverture des types de documents et du nombre approximatif de sessions simultanées pertinentes pour votre déploiement. Vérifiez que le conteneur reste en cours d'exécution, que les erreurs visibles par l'utilisateur cessent et que l'hôte conserve suffisamment de mémoire pour ses autres processus.
Modèle de vérification attendu pour la configuration fictive de 4 Gio ; les valeurs affichées sont des exemples de résultats et non un déploiement mesuré.
Si le problème persiste
Si la nouvelle limite est présente mais que CODE redémarre toujours, examinez docker inspectl'état docker logset les événements du noyau hôte ou de Docker pour détecter une erreur de mémoire insuffisante. Si le conteneur reste opérationnel mais que le traitement des documents déclenche toujours un nettoyage, Docker n'est peut-être pas le goulot d'étranglement. La coolwsdconfiguration de Collabora gère la mémoire indépendamment de la limite des cgroups Docker ; le modèle de configuration du projet décrit ses contrôles côté serveur. Vérifiez la configuration de votre version de CODE installée avant de la modifier.
Ne résolvez pas l'incertitude en allouant une mémoire illimitée au conteneur ou en désactivant le mécanisme de gestion de la mémoire insuffisante. Docker avertit qu'un conteneur sans limite peut contribuer à la saturation de la mémoire hôte et affecter des services non liés. Si l'hôte ne dispose pas de marge de sécurité suffisante, la véritable solution consiste à augmenter la capacité de l'hôte ou de la machine virtuelle Docker, à réduire la charge de travail simultanée ou à répartir les tâches, et non à augmenter la limite au-delà de la RAM disponible.