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 stats --no-stream collabora
docker inspect --format 'Memory={{.HostConfig.Memory}} OOMKilled={{.State.OOMKilled}}' collabora

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.

Illustration du terminal des statistiques Docker montrant un conteneur Collabora hypothétique utilisant 1,8 Gio sur une limite de 2 Gio, étiqueté à titre d'exemple.
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 :

services:
  collabora:
    image: collabora/code:your-current-tag
    mem_limit: 4g
    # Keep the service’s existing settings below
Illustration de l'éditeur YAML mettant en évidence mem_limit : 4g sous un service collabora utilisant la balise image existante.
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.

Illustration du terminal montrant la configuration de docker compose suivie de docker compose up sans dépendances et la recréation forcée du service collabora.
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 :

docker inspect --format 'Memory={{.HostConfig.Memory}} OOMKilled={{.State.OOMKilled}}' collabora
docker stats --no-stream collabora

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.

Illustration du terminal montrant que Docker inspect signale une limite de mémoire de 4294967296 octets et que docker stats affiche une limite de 4 Gio, étiquetée comme sortie d'échantillon attendue plutôt que comme un test.
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.

Laisser un commentaire

Augmenter la limite de mémoire du conteneur CODE sans deviner

Augmenter la limite de mémoire du conteneur CODE sans deviner

Vérifiez si Docker limite la mémoire de Collabora CODE, augmentez la limite de mémoire de Compose en toute sécurité et confirmez que le conteneur en cours d'exécution a bien reçu la nouvelle limite.

Personnaliser les barres d'outils Collabora CODE sans modifier le code source

Personnaliser les barres d'outils Collabora CODE sans modifier le code source

Simplifiez Collabora CODE grâce au mode Compact ou à onglets et aux contrôles WOPI PostMessage pour masquer en toute sécurité les boutons, commandes et onglets sélectionnés.

Exécuter Collabora CODE Behind Nginx avec terminaison TLS

Exécuter Collabora CODE Behind Nginx avec terminaison TLS

Confiez la gestion du HTTPS à Nginx pour un conteneur Collabora CODE, configurez correctement l'édition des WebSockets et vérifiez le point de terminaison public sans exposer le port 9980.

Garder le texte visible à l'ouverture du clavier mobile Collabora

Garder le texte visible à l'ouverture du clavier mobile Collabora

Dépannage des problèmes de masquage du texte par le clavier d'un navigateur mobile dans Collabora Online, avec des solutions de contournement rapides et des vérifications distinctes pour les navigateurs, les WebViews intégrées et les pages hôtes.

Bloquez les impressions et les téléchargements indésirables dans ONLYOFFICE

Bloquez les impressions et les téléchargements indésirables dans ONLYOFFICE

Définissez des limites d'impression et de téléchargement pour les liens ONLYOFFICE, les membres d'une salle ou les sessions de l'API Docs, puis vérifiez les restrictions à partir d'un compte destinataire.

Planifiez des sauvegardes fiables pour votre espace de travail ONLYOFFICE.

Planifiez des sauvegardes fiables pour votre espace de travail ONLYOFFICE.

Définissez une destination de sauvegarde, une planification, une couverture de messagerie et une limite de conservation dans ONLYOFFICE Workspace, puis vérifiez que l'archive est prête à être restaurée.

Déployez ONLYOFFICE Docs Enterprise avec son fichier de composition officiel

Déployez ONLYOFFICE Docs Enterprise avec son fichier de composition officiel

Démarrez la pile Docker Compose d'entreprise, enregistrez sa licence et ses données, configurez JWT en toute sécurité et vérifiez que les éditeurs sont prêts à s'intégrer.

Nettoyez le texte de votre feuille de calcul avec une macro ONLYOFFICE réutilisable.

Nettoyez le texte de votre feuille de calcul avec une macro ONLYOFFICE réutilisable.

Utilisez une macro JavaScript ONLYOFFICE pour supprimer les caractères non imprimables et les espaces superflus d'une plage de feuille de calcul définie, avec un flux de travail de révision sécurisé.

Modifier l'emplacement de stockage par défaut de l'espace de travail ONLYOFFICE

Modifier l'emplacement de stockage par défaut de l'espace de travail ONLYOFFICE

Déplacez les données du portail depuis le disque par défaut vers un fournisseur de stockage cloud compatible, ou déplacez les données Docker en toute sécurité en modifiant leur mappage de volume hôte.

Supprimez complètement le serveur de documents ONLYOFFICE de Linux.

Supprimez complètement le serveur de documents ONLYOFFICE de Linux.

Identifiez si Document Server utilise un package Linux ou Docker, supprimez uniquement ses composants et vérifiez les données restantes sans supprimer par erreur les services partagés.