Allocation de mémoire pour les services

À mesure que votre entreprise se développe et que le nombre d'appareils connectés augmente inévitablement, la demande en ressources pour assurer le bon fonctionnement de la plateforme Navixy augmente également. Alors que la puissance CPU et l'espace disque sont alloués selon les besoins sans limitation, la quantité maximale de RAM utilisable est strictement régulée par les configurations système. Ainsi, il peut arriver que la mémoire allouée soit insuffisante et doive être augmentée. Dans cette section, nous indiquerons où trouver les fichiers de configuration requis et comment effectuer les ajustements nécessaires pour optimiser les performances de la plateforme.

Services Java

Le backend de la plateforme Navixy se compose de trois services Java. Les configurations par défaut allouent les quantités de RAM suivantes pour chacun d'eux :

  • API-server - 1024 Mb

  • SMS-server - 512 Mb

  • TCP-server - 1024 Mb

Cette quantité de mémoire est suffisante pour un fonctionnement stable de la plateforme avec jusqu'à plusieurs milliers d'appareils enregistrés. Toutefois, si vous constatez une instabilité de la plateforme, telle que des requêtes API lentes, une génération de rapports longue ou des problèmes de traitement des données des traceurs, augmenter la quantité de mémoire allouée peut être une solution. Ci‑dessous, nous verrons où trouver les configurations qui spécifient cette valeur, selon la manière dont la plateforme est déployée.

Il est recommandé de spécifier la quantité de mémoire allouée comme un multiple de 1024. La valeur est spécifiée séparément pour chaque service.

Lors de la modification des configurations, il est crucial de prendre en compte la mémoire totale disponible. Cela permet de ne pas indiquer une quantité dépassant les limites physiques. Ce faisant, vous pouvez optimiser efficacement les performances et éviter d'éventuels problèmes. De plus, si les services Java et la base de données se trouvent sur le même serveur, n'oubliez pas de laisser suffisamment d'espace pour le fonctionnement de la base de données - par défaut, cela représente 70 % de toute la mémoire.

Linux - services systemd

Pour les versions actuelles de la plateforme (à la fois celles récemment installées et celles qui ont reçu les dernières mises à jour), systemd est utilisé comme gestionnaire de démarrage des services. Les configurations de démarrage se trouvent dans les répertoires des services aux chemins suivants :

  • /home/java/api-server/api-server.service.env

  • /home/java/sms-server/sms-server.service.env

  • /home/java/tcp-server/tcp-server.service.env

À l'intérieur de chaque fichier, il y a une ligne telle que MAX_HEAP_SIZE="1024m". Spécifiez la quantité de mémoire que vous souhaitez allouer au service en mégaoctets. N'oubliez pas de conserver la lettre m qui signifie mégaoctets.

Redémarrez la plateforme ou le service spécifique pour appliquer les modifications.

Linux - services runit

Si vous choisissez de ne pas basculer vers systemd lors de la mise à jour de votre plateforme vers la dernière version (cette option est proposée lors des mises à jour automatiques), ou si vous utilisez une ancienne version de la plateforme Navixy On‑premise, les services Java utilisent runit comme superviseur de services. Il possède également ses propres fichiers de configuration, situés aux chemins suivants :

  • /etc/sv/api-server/run

  • /etc/sv/sms-server/run

  • /etc/sv/tcp-server/run

Parmi les paramètres à l'intérieur de chaque fichier, vous trouverez une valeur Xmx — il s'agit de la quantité maximale de mémoire qui peut être allouée pour le service Java correspondant. Le paramètre complet ressemble à ceci : -Xmx1024m - cela signifie que 1024 Mb de RAM sont alloués au service. Modifiez cette valeur et indiquez ce qui est nécessaire, puis enregistrez le fichier.

Redémarrez la plateforme avec la restart-navixy commande pour appliquer les modifications.

Linux - instance dockerisée

Dans la version dockerisée de la plateforme, l'allocation de mémoire est définie lors du déploiement des conteneurs - lorsque la docker compose up -d commande est exécutée. Il s'agit d'une étape obligatoire lors de l'installation et de la mise à jour d'une instance, mais elle peut être effectuée indépendamment de ces processus.

Bien que les paramètres de base de l'instance soient spécifiés dans le .env fichier, un fichier appelé compose.yaml est utilisé pour configurer le fonctionnement des conteneurs - il se trouve dans le même dossier de travail de l'instance que les autres fichiers système.

Dans ce fichier, vous pouvez voir les différentes sections qui définissent les options de démarrage pour tous les conteneurs. Pour modifier la quantité de mémoire allouée aux api, sms et tcp conteneurs, vous devez trouver les sections correspondantes et ajouter l'option "MAX_HEAP_SIZE=" à la sous‑section environment , par exemple :

Voici un exemple de la façon dont cela est fait pour api-server sur une instance existante :

Enregistrez le fichier.

Après application des modifications, exécutez la commande suivante depuis le répertoire de travail :

Cela recréera les conteneurs en tenant compte des nouveaux paramètres.

Le compose.yaml Le fichier est remplacé lorsque l'instance dockerisée Navixy est mise à jour, et dans ce cas les paramètres ci‑dessus doivent être refaits. Vous pouvez le faire avant d'exécuter initialement l'instance nouvellement mise à jour afin de la lancer immédiatement avec les paramètres nécessaires.

Windows - services Wrapper

Les services Java ne sont pas conçus par défaut pour fonctionner sous Windows, c'est pourquoi un logiciel tiers est utilisé pour les activer. Il s'appelle YAJSW (Yet Another Java Service Wrapper) et est conçu pour convertir des fichiers exécutables jar ordinaires en services Windows. Ce logiciel est inclus dans le package de distribution de la plateforme Navixy et est configuré lors de l'installation initiale.

Wrapper n'a pas de répertoire d'installation standard et peut se trouver n'importe où, mais il est généralement placé dans C:\java\wrapper le dossier. À l'intérieur, vous trouverez le dossier \conf qui contient les fichiers de configuration pour les trois services :

  • wrapper.api-server.conf

  • wrapper.sms-server.conf

  • wrapper.tcp-server.conf

Au bas de chacun des fichiers de configuration se trouvent les paramètres de démarrage du service, et ils incluent une ligne telle que :

La valeur du paramètre -Xmx1024m signifie que 1024 Mb de RAM sont alloués au service. Modifiez cette valeur et spécifiez la quantité de RAM requise, en conservant la m lettre, puis enregistrez le fichier.

Redémarrez le(s) service(s) pour appliquer les modifications.

MySQL

La base de données est le service le plus gourmand en ressources au sein de la plateforme. Lorsqu'un grand nombre d'appareils exercent une pression sur une mémoire limitée, la base de données peut avoir du mal à traiter toutes les requêtes entrantes. Par conséquent, cela peut entraîner un fonctionnement lent et instable de la plateforme Navixy. Nous recommandons vivement de surveiller les performances de la base de données et, si nécessaire, d'augmenter la capacité de RAM du serveur.

La quantité de RAM allouée à la base de données est une valeur statique qui est spécifiée dans la configuration MySQL. Il est généralement recommandé de conserver cette valeur à 70 % de la quantité totale de RAM du serveur. Par conséquent, si vous augmentez la quantité totale de RAM pour de meilleures performances de la base de données, vous devez modifier la valeur dans la configuration par la suite.

Le fichier de configuration MySQL se trouve au chemin suivant :

  • Linux : /etc/mysql/mysql.conf.d/mysqld.cnf

  • Windows : C:\ProgramData\MySQL\MySQL Server 8\my.ini

Sous la section [mysqld] de cette configuration, vous trouverez le paramètre innodb_buffer_pool_size — il définit la quantité de mémoire allouée à la base de données. Si la taille actuelle est insuffisante, modifiez le paramètre en conséquence (veuillez conserver l'unité de mesure - G pour gigaoctets). Enregistrez le fichier et redémarrez MySQL.

Mis à jour

Ce contenu vous a-t-il été utile ?