HCL Commerce Version 9.1.13.0 or later

Opérations Elasticsearch multiples ou simultanées

Plusieurs opérations Elasticsearch ou simultanées peuvent réduire les performances. La recherche de la cause doit être effectuée avec attention et planification.

La détection et la détermination de la cause première de la lenteur d'Elasticsearch lorsque des opérations simultanées sont exécutées est complexe et doit être effectuée avec un soin et une préparation supplémentaires. Vous pouvez anticiper la réalisation de tests d'environnement dans les situations suivantes :
  1. Comme prévu pour la haute saison, lorsque la charge de travail de production est à sa capacité ou à son pic.
  2. Toutes les opérations liées à l'index qui doivent être exécutées pendant la charge de travail maximale (génération d'index, mises à jour NRT de l'index, mises à jour de l'index de stock, etc.).
  3. D'autres opérations n'affectent pas directement l'index ou les données de recherche, mais peuvent affecter les opérations globales (par exemple, effacement complet du cache après réindexation, etc.).

Le cas de la congestion de flux

Certaines situations sont fréquemment rencontrées lors de l'exécution d'une charge de travail mixte, comme la congestion en entonnoir et la dégradation des performances. Contrairement au type d'opération unique, il s'agit d'un exercice d'optimisation plus compliqué qui observe et ajuste les ressources insuffisantes et équilibre ces ressources en fonction d'une certaine priorité. Par exemple, la requête de recherche en production doit précéder les opérations de génération d'index.

Dans un cas où la lenteur d'Elasticsearch est due à un mélange de charge de travail dans lequel le cluster de recherche indexait et servait des données de requête opérationnelles, le réglage est plus compliqué et nécessite une prise de décision initiale concernant les priorités des types de mélange de charge de travail.

Dans la plupart des cas, vous devez prioriser un type d'opération par rapport à un autre. Dans cet exemple, il faudrait sélectionner une priorité plus élevée pour les recherches actives et une priorité inférieure pour la création d'index dans l'environnement de création.

Modification des unités d'exécution d'écriture :

La modification des unités d'exécution d'écriture et de recherche dans Elasticsearch peut optimiser efficacement le cluster pour améliorer les performances et fournir une hiérarchisation entre les opérations d'écriture (génération d'index d'authentification) et opérationnelles (requêtes d'unités d'exécution de recherche).

Elasticsearch dispose d'un pool d'unités d'exécution d'écriture qui gère les requêtes d'indexation. Par défaut, ce pool a une taille de (nombre de cœurs d'UC x 2) + 1. Vous pouvez augmenter ou réduire la taille de ce pool en fonction de la charge de travail de votre cluster.

Pour modifier la taille du pool d'unités d'exécution d'écriture, vous pouvez utiliser le paramètre thread_pool.write.size dans le fichier de configuration Elasticsearch. Par exemple, pour augmenter la taille du pool d'unités d'exécution d'écriture à 16, vous pouvez ajouter la ligne suivante au fichier de configuration :

thread_pool.write.size : 16.

Modification des unités d'exécution de recherche

Elasticsearch dispose également d'un pool d'unités d'exécution de recherche qui gère les requêtes de recherche. Par défaut, ce pool a une taille de (nombre de coeurs d'UC x 3) / 2. Vous pouvez augmenter ou réduire la taille de ce pool en fonction de la charge de travail de votre cluster.

Pour modifier la taille du pool d'unités d'exécution de recherche, vous pouvez utiliser le paramètre thread_pool.search.size dans le fichier de configuration Elasticsearch. Par exemple, pour augmenter la taille du pool d'unités d'exécution de recherche à 24, vous pouvez ajouter la ligne suivante au fichier de configuration :

thread_pool.search.size : 24.

Important: La modification des tailles de pool d'unités d'exécution doit être effectuée avec précaution et après un test approfondi. Une augmentation trop importante de la taille du pool d'unités d'exécution peut entraîner un épuisement des ressources et des problèmes de performances. Il est recommandé de surveiller l'utilisation des ressources de votre cluster après avoir modifié les tailles du pool d'unités d'exécution et de les ajuster en conséquence pour obtenir des performances optimales.
L'ajustement des paramètres d'index peut également optimiser Elasticsearch pour obtenir de meilleures performances. Les paramètres suivants peuvent être modifiés pour améliorer les performances d'indexation :
Intervalle d'actualisation

Par défaut, Elasticsearch actualise l'index de recherche toutes les secondes. Cela signifie que lorsqu'un document est indexé, il sera immédiatement disponible pour la recherche au prochain intervalle d'actualisation. Si vous avez un volume élevé de requêtes d'indexation, envisagez d'augmenter l'intervalle d'actualisation pour réduire la fréquence des actualisations d'index et améliorer les performances d'indexation. Inversement, si vous avez besoin d'une indexation en temps réel, vous pouvez réduire l'intervalle d'actualisation.

Pour ajuster l'intervalle d'actualisation, utilisez le paramètre index.refresh_interval. Par exemple, pour définir l'intervalle d'actualisation sur 5 secondes, vous pouvez exécuter la commande suivante :
PUT /my_index/_settings
{
  "index" : {
    "refresh_interval" : "5s"
  }
}
Nombre de fragments

Le nombre de fragments dans un index peut également affecter les performances d'indexation. Si vous disposez d'un index étendu avec de nombreux fragments, les performances d'indexation peuvent être plus lentes en raison de la surcharge de coordination des écritures sur plusieurs fragments. En général, il est recommandé de conserver le nombre de fragments par index entre 1 et 5.

Pour ajuster le nombre de fragments, vous pouvez utiliser le paramètre index.number_of_shards. Par exemple, pour définir le nombre de fragments sur 3, vous pouvez exécuter la commande suivante :
PUT /my_index/_settings
{
  "index" : {
    "number_of_shards" : 3
  }
}