Comment puis-je résoudre les problèmes de forte sollicitation de la mémoire JVM sur mon cluster Amazon OpenSearch Service ?

Date de la dernière mise à jour : 23/07/2021

Mon cluster Amazon OpenSearch Service (successeur d'Amazon Elasticsearch Service) présente une forte sollicitation de la mémoire JVM. À quoi se rapportent les différents niveaux de sollicitation de la mémoire JVM et comment puis-je les réduire ?

Solution

Le niveau de sollicitation de la mémoire JVM se présente sous la forme de pourcentages applicables au tas Java dans un nœud de cluster. Les directives suivantes indiquent ce que signifient les pourcentages de sollicitation de la mémoire JVM :

  • Si la sollicitation de la mémoire JVM atteint 75 %, Amazon OpenSearch Service déclenche le récupérateur de mémoire Concurrent Mark Sweep (CMS). Le processus de récupération de mémoire nécessite une utilisation intense du processeur. Si la sollicitation de la mémoire JVM reste à ce niveau pendant quelques minutes, vous pouvez rencontrer des problèmes de type ClusterBlockException ou JVM OutOfMemoryError, ou relatifs aux performances 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 %, JVM OpenSearch Service est configurée pour s'arrêter et redémarre éventuellement sur OutOfMemory (OOM).

Une forte sollicitation de la mémoire JVM peut survenir pour les raisons suivantes :

  • Pics du nombre de demandes envoyées au cluster.
  • Regroupements, caractères génériques et sélection de grandes plages de temps dans les requêtes.
  • Allocation déséquilibrée des partitions entre les nœuds ou nombre trop élevé de partitions dans un cluster.
  • Foisonnement de données de champ ou de mappage d'index.
  • Types d'instance qui ne peuvent pas gérer les charges entrantes.

Vous pouvez résoudre les problèmes liés à une forte sollicitation de la mémoire JVM en réduisant le trafic à destination du cluster. Pour réduire le trafic à destination du cluster, procédez comme suit :

  • Effacez le cache des données de champ en appelant l'opération d'API POST /index_name/_cache/clear?fielddata=true.
    Remarque : le nettoyage du cache peut perturber les requêtes en cours.
  • Évitez les regroupements sur les champs de texte ou optez pour un mappage de type mot clé.
  • Mettez le domaine à l'échelle (de sorte que la taille de tas maximale par nœud soit de 32 Go).
  • Activez la journalisation lente pour identifier les demandes défaillantes.
    Remarque : vérifiez que le niveau de sollicitation de la mémoire JVM est inférieur à 90 %. Pour obtenir des informations supplémentaires sur les requêtes Elasticsearch lentes, veuillez consulter la rubrique Advanced tuning: finding and fixing slow Elasticsearch queries (Réglage avancé :résolution des problèmes de lenteur des requêtes Elasticsearch) sur le site Web d'Elastic.
  • Optimisez la recherche ou l'indexation en choisissant le nombre correct de partitions. Pour obtenir des informations supplémentaires sur l'indexation et le nombre de partitions, consultez Démarrer avec Amazon OpenSearch Service : de combien de partitions ai-je besoin ?
  • Réduisez le nombre de partitions en supprimant les index anciens ou inutilisés.
  • Pour les utilisateurs avancés, vous pouvez mettre à jour les paramètres parent, fielddata ou demander des disjoncteurs en fonction de votre cas d'utilisation. Pour obtenir des informations supplémentaires sur les disjoncteurs JVM, veuillez consulter la rubrique JVM OutOfMemoryError.

Pour plus d'informations sur la résolution des problèmes liés à une forte sollicitation de la mémoire JVM, veuillez consulter la rubrique Pourquoi mon nœud Amazon OpenSearch Service est-il défaillant ?


Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?