Passer au contenu

Comment résoudre les problèmes de sollicitation importante de la mémoire de la machine virtuelle Java sur mon cluster OpenSearch Service ?

Lecture de 4 minute(s)
0

Mon cluster Amazon OpenSearch Service indique une sollicitation importante de la mémoire de la machine virtuelle Java (JVM) et je souhaite la réduire.

Brève description

Par défaut, OpenSearch Service utilise 50 % de la RAM d'une instance Amazon Elastic Compute Cloud (Amazon EC2) pour les tas JVM allant jusqu'à 32 Gio. La sollicitation de la mémoire JVM indique le pourcentage du tas Java dans un nœud de cluster.

Les raisons suivantes peuvent entraîner une sollicitation importante de la mémoire JVM :

  • Pics du nombre de requêtes adressées au cluster
  • Agrégations, caractères génériques et plages de temps étendues dans les requêtes
  • Allocations de partitions déséquilibrées entre les nœuds ou nombre excessif de partitions dans un cluster
  • Explosions des mappages de données ou d’index de champ
  • Types d'instances Amazon EC2 qui ne peuvent pas gérer la charge entrante

Résolution

Surveiller les tendances dans vos données

Pour résoudre les problèmes de sollicitation importante de la mémoire JVM, réduisez le trafic vers le cluster.

Exécutez la commande suivante pour obtenir des statistiques au niveau du nœud concernant votre cluster et identifier les nœuds soumis à une sollicitation de la mémoire ou une récupération excessive de mémoire :

GET _nodes/stats/jvm

Pour mieux identifier les requêtes erronées, activez les journaux lents. Pour plus d'informations, consultez la page Journaux lents de partition sur le site Web d’OpenSearch. Assurez-vous que la sollicitation de la mémoire JVM est inférieure à 90 %. Pour plus d’informations sur les requêtes lentes, consultez la page Réglage avancé : recherche et correction de requêtes Elasticsearch lentes sur le site Web d’Elasticsearch.

Utilisez Amazon CloudWatch pour surveiller l'utilisation de la mémoire JVM et le comportement du récupérateur de mémoire au fil du temps. Utilisez ces informations pour détecter des modèles et prendre des mesures avant que le cluster ne soit instable. Configurez également les alarmes CloudWatch pour détecter et résoudre de manière proactive la sollicitation importante de la mémoire JVM.

Vérifier les paramètres de votre cache

Pour vider le cache des données de champ, exécutez la requête suivante :

POST /index_name/_cache/clear?fielddata=true

Remarque : Lorsque vous videz le cache, vous risquez de perturber les requêtes en cours.

Si vous dépassez les limites des disjoncteurs JVM et que votre utilisation de la mémoire n'est pas contrôlée, une erreur JVM OutOfMemoryError s’affiche. Pour résoudre ce problème, modifiez l'allocation du cache de données de champ du disjoncteur parent ou les paramètres du disjoncteur de requête en fonction des exigences de votre configuration. Pour plus d'informations sur la procédure de modification de ces paramètres au niveau du cluster, consultez la page API des paramètres du cluster sur le site Web d’OpenSearch.

Optimiser votre configuration

Utilisez les bonnes pratiques suivantes pour optimiser votre configuration :

Pour plus d’informations sur la procédure de résolution des problèmes de sollicitation importante de la mémoire JVM, consultez la section Pourquoi mon nœud OpenSearch Service s’est-il bloqué ?

Comprendre les effets d'une sollicitation importante de la mémoire JVM

Les scénarios suivants montrent comment OpenSearch Service gère différents pourcentages de sollicitation de la mémoire JVM :

  • Si la sollicitation de la mémoire de la JVM atteint 75 %, OpenSearch Service lance le récupérateur de mémoire CMS (Concurrent Mark Sweep) pour les types d’instances x86. Les types d’instances Graviton basés sur ARM font appel au récupérateur de mémoire Garbage-First (G1) qui utilise des pauses courtes supplémentaires et une défragmentation du tas.
    Remarque : Le´récupérateur de mémoire est un processus gourmand en ressources processeur. Si l’utilisation de la mémoire continue d’augmenter, vous pouvez rencontrer des erreurs « ClusterBlockException », « JVM OutOfMemoryError » ou d’autres problèmes de performance du cluster.
  • Si la sollicitation de la mémoire JVM dépasse 92 % pendant 30 minutes, OpenSearch Service bloque toutes les opérations d’écriture.
  • Si la sollicitation de la mémoire JVM atteint 100 %, OpenSearch Service se ferme et redémarre finalement l'instance avec le message d'erreur « OutOfMemory (OOM) ».

Informations connexes

Résolution des problèmes liés à OpenSearch Service

Démarrer avec OpenSearch Service : De combien de partitions ai-je besoin ?

AWS OFFICIELA mis à jour il y a 6 mois