Comment détecter un problème de mémoire sur Akuiteo ?

Technique

Le client Akuiteo se fige et les nouvelles connexions à l'application sont impossibles. Comment savoir si il s'agit d'un problème de paramétrage mémoire d'Akuiteo ?

1. La première étape consiste à identifier s'il s'agit bien d'une erreur de mémoire allouée à Akuiteo :

Dans le répertoire logs de Tomcat, repérer les fichiers :

• akuiteo.log- catalina.YYYY-MM-DD.log (YYYY-MM-DD correspond à l'année, mois, jour où est survenu le blocage).

Dans ces fichiers, faire une recherche sur la chaine de caractère "OutOfMemory".
Si vous trouvez une trace, qui peut se situer au moment même du blocage, ou un peu avant, il s'agit bien d'une erreur mémoire.

2. Résolution :

Avant d'ajuster tout paramétrage mémoire il faut faire une distinction importante entre 2 types d'erreur mémoire :

  • "java.lang.OutOfMemoryError: Java heap space" : Il s'agit de la mémoire de travail d'Akuiteo.
    À un instant T, un nombre important de traitement a entrainé un dépassement de la mémoire allouée. Dans ce cas, se rendre sur l'outil de configuration Tomcat (sur le serveur), et sur l'onglet "Java", section "Java Options".
    Repérer le paramètre -XmxZZZZm, le ZZZZ correspondant à la mémoire allouée à java.
    Les unités de valeurs sont M (pour méga) ou G (pour giga).
    Ajustez la mémoire en ajoutant des incréments de 1Go de RAM. Enfin redémarrez le serveur pour prendre en compte le nouveau paramètre.
    Exemple : Le paramètre est aujourd'hui -Xmx1024M, après une erreur de type OutOfMemory, on modifiera en -Xmx2048M ou -Xmx2G.
  • "java.lang.OutOfMemoryError: PermGen space" : Cette erreur est plus rare, et correspond a un manque de mémoire dans la zone contenant le code l'application au sein de la JVM Java (PermGen signifiant "Permanent Generation" ). Dans ce cas, se rendre sur l'outil de configuration Tomcat (sur le serveur), et sur l'onglet "Java", section "Java Options". Repérer le paramètre -XX:MaxPermSize=ZZZm, le ZZZ correspondant à la mémoire allouée à java. L'indicateur de quantité correspond à Ajustez la mémoire en ajoutant des incréments de 128 ou 256Mo de RAM.
    Enfin redémarrez le serveur pour prendre en compte le nouveau paramètre.

Exemple : Le paramètre est aujourd'hui -XX:MaxPermSize=256M, après une erreur de type OutOfMemory : PermGen Space, on modifiera en -XX:MaxPermSize=384M

Attention : Il est important de procéder précautionneusement lorsque l'on ajuste ce paramètre, la mémoire dite PermGen n'influence en aucune façon les performances de l'application, il s'agit d'une zone mémoire de taille nécessaire et suffisante pour qu'Akuiteo s'exécute. Toute valeur démesurée sera de la RAM perdue sur le serveur.