> For the complete documentation index, see [llms.txt](https://navixy.com/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://navixy.com/docs/on-premise/fr/on-premise/how-to-guide/maintenance/memory-allocation-for-services.md).

# Allocation de mémoire pour les services

Ajustez l’allocation de RAM pour les services Java Navixy et MySQL dans les déploiements systemd, runit, Docker et Windows. Modifiez les fichiers de configuration des services pour définir les limites de mémoire.

À mesure que votre activité se développe et que le nombre de Rapport des capteurs d'information augmente inévitablement, la demande en ressources pour assurer le bon fonctionnement de la plateforme Navixy augmente également. Alors que la puissance du processeur et l'espace disque sont alloués selon les besoins, sans aucune limitation, la quantité maximale de RAM pouvant être utilisée est strictement régie par la configuration du système. Il peut donc arriver un moment où vous réalisez que la mémoire allouée est insuffisante et qu'il faut l'augmenter. Dans cette section, nous vous indiquerons comment localiser les fichiers de configuration requis et effectuer les ajustements nécessaires pour optimiser les performances de la plateforme.

{% hint style="danger" %}
Lorsqu'il s'agit de modifier les configurations qui régissent le lancement des services, la plus grande prudence est requise. Faites preuve d'une grande vigilance et d'une grande attention lors de leur modification afin d'assurer le bon fonctionnement.

**N'oubliez pas !** Des modifications de configuration imprudentes peuvent entraîner une indisponibilité totale du service.\
Avant d'apporter la moindre modification à la config, il est conseillé d'en créer une copie de sauvegarde. Comme la config n'est qu'un simple fichier texte, vous pouvez la stocker en toute sécurité dans un répertoire séparé ou enregistrer son contenu ailleurs, ce qui garantit son intégrité et évite toute perte potentielle.
{% endhint %}

## Services Java

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

* Serveur API - 1024 Mb
* Serveur SMS - 512 Mb
* Serveur TCP - 1024 Mb

Cette quantité de mémoire est suffisante pour assurer le fonctionnement stable de la plateforme avec jusqu'à plusieurs milliers d'appareils enregistrés. Cependant, si vous constatez une instabilité de la plateforme, comme des requêtes API lentes, une génération de rapports longue ou des problèmes de traitement des données du tracker, augmenter la quantité de mémoire allouée peut être une solution. Ci-dessous, nous verrons où trouver les configs qui spécifient cette valeur, selon le mode de déploiement de la plateforme.

Il est recommandé de spécifier la quantité de mémoire allouée sous la forme d'un **multiple de 1 024**. La valeur est spécifiée séparément pour chaque service.

{% hint style="info" %}
Lorsque vous modifiez les fichiers de configuration, il est crucial de tenir compte de la mémoire totale disponible. Cela vous permet de ne pas spécifier une quantité qui dépasse les limites physiques. Ce faisant, vous pouvez optimiser efficacement les performances et éviter d'éventuels problèmes. Par ailleurs, 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, il s'agit de 70 % de toute la mémoire.
{% endhint %}

#### Linux - services systemd

Pour les versions actuelles de la plateforme (qu'elles aient été installées récemment ou qu'elles aient 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 de service 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`

Dans chaque fichier, il y a une ligne telle que `MAX_HEAP_SIZE="1024m"`. Indiquez 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](/docs/on-premise/fr/on-premise/how-to-guide/maintenance/restarting-instance.md) pour appliquer les modifications.

#### Linux - services runit

Si vous choisissez de ne pas passer à 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** le superviseur de services. Il possède également ses propres fichiers de configuration, et ils se trouvent aux chemins suivants :

* `/etc/sv/api-server/run`
* `/etc/sv/sms-server/run`
* `/etc/sv/tcp-server/run`

Parmi les paramètres de chaque fichier, vous trouverez la valeur  `Xmx`  - il s'agit de la quantité maximale de mémoire pouvant être allouée au service Java correspondant. Le paramètre complet ressemble à ceci : `-Xmx1024m`  - cela signifie que 1 024 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 `restart-navixy` la commande pour appliquer les modifications.

#### Linux - instance conteneurisée

Dans la version conteneurisé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. C'est 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 de 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 `section environnement` par exemple :

```
- "MAX_HEAP_SIZE=2048m"
```

Voici un exemple de la manière dont cela est fait pour *api-server* sur une instance existante :

![](https://3374717639-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkUnMmePH99SsdChtqqu7%2Fuploads%2Fgit-blob-e3209eb99957ff2b0928e0c405941d768a6a407b%2Fimage-20230921-082139.png?alt=media)

Enregistrez le fichier.

Une fois les modifications appliquées, exécutez la commande suivante dans le répertoire de travail :

```
docker compose up -d
```

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

{% hint style="info" %}
Le `compose.yaml` Le fichier compose.yaml est remplacé lorsque l'instance Navixy conteneurisée est mise à jour, et dans ce cas les paramètres ci-dessus doivent être définis à nouveau. Vous pouvez le faire avant de lancer initialement la nouvelle instance mise à jour afin de pouvoir la démarrer immédiatement avec les paramètres nécessaires.
{% endhint %}

#### Windows - services wrapper

Les services Java ne sont pas conçus pour exister sous Windows par défaut, 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 classiques 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 ne dispose pas d'un répertoire d'installation standard et peut se trouver n'importe où, mais il est généralement placé dans le `C:\java\wrapper` dossier. À l'intérieur, vous trouverez le `\conf` dossier, qui contient les fichiers de configuration des trois services :

* `wrapper.api-server.conf`
* `wrapper.sms-server.conf`
* `wrapper.tcp-server.conf`

En bas de chacun des fichiers de config se trouvent les paramètres de démarrage du service, et ils incluent une ligne comme :

```
wrapper.java.additional.3 = -Xmx1024m
```

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

[Redémarrez le ou les services](/docs/on-premise/fr/on-premise/how-to-guide/maintenance/restarting-instance.md) pour appliquer les modifications.

## MySQL

La base de données est le service le plus gourmand en ressources 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, la plateforme Navixy peut fonctionner lentement et de manière instable. Nous vous 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 spécifiée dans la configuration MySQL. Il est généralement recommandé de conserver cette valeur à 70 % de la quantité totale de RAM sur le serveur. Par conséquent, si vous augmentez la quantité totale de RAM pour de meilleures performances de la base de données, vous devez ensuite modifier cette valeur dans la configuration.

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`

Dans la `[mysqld]` section 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 (veillez à conserver l'unité de mesure - `G` pour les gigaoctets). Enregistrez le fichier et redémarrez MySQL.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://navixy.com/docs/on-premise/fr/on-premise/how-to-guide/maintenance/memory-allocation-for-services.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
