Problèmes de gestion de la mémoire

Bonjour,
Nous avons un serveur qui tourne sur la version community, avec la configuration mémoire suivante:
dbms.memory.heap.initial_size=8g
dbms.memory.heap.max_size=8g
dbms.memory.pagecache.size=4g

La taille du graphe est relativement petite (moins de 2 millions de noeuds), nous utilisons java8.
Le Garbage Collection s'exécute au plus toutes les 5 minutes, généralement moins selon la charge, en tous cas dès que la mémoire utilisée dépasse 4 ou 5g.

Pourquoi le GC ne se produit pas à 8g, mais à 5g?

Ensuite nous avons fait des tests avec la version entreprise, mais alors là c'est catastrophique, le GC se déclenche toutes les quelques secondes, neo4j monopolise les 24 coeurs du processeur et fait quasiment s'écrouler le serveur. Nous avons essayé toutes les combinaisons possibles de mémoire (entre 4g et 24g) sans modification substantielle.

Comment peut-on voir d'où vient le problème?
Même en activant les métriques de la version entreprise, difficile de s'y retrouver.

Merci pour votre aide,

Camille.

Bonjour Camille,

Comment peut-on voir d'où vient le problème?
On peut commencer par vérifier si la mémoire est conforme aux recommandations avec neo4j-admin memrec
https://neo4j.com/docs/operations-manual/3.5/performance/memory-configuration/#_capacity_planning

Pourquoi le GC ne se produit pas à 8g, mais à 5g?
Tout depend de l'activité sur le serveur et notamment des requetes cypher.
La bonne démarche pour resoudre ce type de probleme est d'activer d'identifier un potentiel probleme de code:
https://neo4j.com/docs/operations-manual/3.5/monitoring/logging/query-logging/

De profiler les requetes les plus couteuses en terme d allocation, de temps ou de cpu.
Ensuite, vous pouvez augmenter la taille du heap.

Jérémie