Boutons de réglage
Elasticsearch possède plusieurs points de configuration qui peuvent être modifiés pour des performances optimales et l'allocation des ressources. Voici quelques boutons de réglage critiques à prendre en compte.
-
- Taille du segment de mémoire
-
La taille du segment de mémoire est l'un des paramètres d'optimisation les plus critiques pour Elasticsearch. Il détermine la quantité de mémoire allouée à la machine virtuelle Java d'Elasticsearch et affecte diverses opérations, y compris la mise en cache, l'indexation et la recherche.Note: Il est recommandé d'allouer environ 50% de la mémoire disponible au segment de mémoire, jusqu'à un maximum de 30 Go. Elasticsearch utilise la mémoire native pour divers caches et mémoires tampon dans les communications intra-pod et inter-pod.
-
- Pools d'unités d'exécution
- Elasticsearch utilise divers pools d'unités d'exécution pour différentes opérations, telles que l'indexation, la recherche et la fusion. Vous pouvez régler les paramètres du pool d'unités d'exécution pour contrôler le nombre d'unités d'exécution allouées pour chaque type d'opération et ajuster la taille de la file d'attente pour les requêtes en attente. Cela permet d'équilibrer l'allocation des ressources en fonction de votre charge de travail spécifique.
Pour plus d'informations, voir Pools d'unités d'exécution.
-
- Disjoncteurs
- Les disjoncteurs protègent Elasticsearch contre une utilisation excessive de la mémoire ou de l'espace disque. Vous pouvez configurer les paramètres du disjoncteur pour contrôler la façon dont Elasticsearch gère les limitations de ressources et éviter les erreurs de mémoire insuffisante ou d'espace disque.
Pour plus d'informations, voir Paramètres de disjoncteur.
-
- Taille du cache
-
Elasticsearch utilise divers caches, tels que les données de zone et le cache de requête, pour améliorer les performances de recherche. Vous pouvez ajuster les paramètres de taille du cache pour optimiser l'utilisation de la mémoire en fonction de vos modèles de requête et de la taille des données.
-
- Cache de données de zone
- Le cache de données de zone dans Elasticsearch est un cache basé sur la mémoire qui stocke les valeurs de zone des documents indexés dans un format compressé et optimisé. Il accélère l'exécution de la requête en préchargeant les valeurs de zone fréquemment consultées dans la mémoire. En mettant en cache les données de zone, Elasticsearch évite de charger des données à partir d'un disque pour chaque requête, ce qui améliore les performances. Il s'agit d'une fonction d'optimisation cruciale qui peut améliorer les performances de recherche, en particulier pour les agrégations, le tri et les opérations de scriptage.
Pour plus d'informations, voir Paramètres de cache de données de zone.
-
- Disjoncteur de chargement de données de zone
- Le disjoncteur de chargement de données de zone protège contre l'utilisation excessive de la mémoire par les caches de données de zone. Vous pouvez configurer le paramètre indexs.breaker.fielddata.limit pour contrôler la mémoire allouée aux caches de données de zone et éviter les erreurs de mémoire insuffisante.
Pour plus d'informations, voir Disjoncteur de données de zone.
-
- Mise en cache de requête
- Elasticsearch prend en charge la mise en cache de requête, ce qui peut améliorer les performances des requêtes en mettant en cache les résultats des requêtes fréquemment exécutées. Pour optimiser les performances, vous pouvez activer la mise en cache de requête et ajuster les paramètres de cache, tels que la taille du cache et le délai d'expiration.
Pour plus d'informations, voir Paramètres de cache de requête de nœud.
-
- Ressources matérielles
- Les performances d'Elasticsearch sont fortement influencées par les ressources matérielles disponibles. Envisagez de régler la configuration matérielle, telle que la mémoire de l'UC, les E/S disque et les paramètres réseau, pour qu'elle corresponde à vos exigences de charge de travail et optimise les performances.
-
- Descripteurs de fichier et limites de processus
- Elasticsearch est une application gourmande en ressources nécessitant suffisamment de descripteurs de fichiers et de limites de processus pour fonctionner correctement. Vous pouvez augmenter le nombre maximal de descripteurs de fichiers ouverts et ajuster les limites de processus pour répondre aux besoins de votre cluster Elasticsearch.
-
- Indexation des paramètres de mémoire tampon
- Elasticsearch utilise des mémoires tampons pour transférer des données avant leur écriture sur le disque. Vous pouvez régler les tailles de mémoire tampon d'indexation pour optimiser les performances d'indexation. Le paramètre indices.memory.index_buffer_size contrôle la taille de la mémoire tampon pour chaque fragment.
Pour plus d'informations, voir Indexation des paramètres de mémoire tampon.
Pour plus d'informations, voir Réglage de la vitesse d'indexation.
-
- Filtres de temps de requête
- Elasticsearch fournit des filtres de temps de requête qui vous permettent d'appliquer des filtres à une requête. L'utilisation de filtres peut améliorer les performances des requêtes en réduisant la quantité de données à traiter.
-
- Actualiser et vider les intervalles
-
Elasticsearch actualise périodiquement son index pour rendre les nouvelles données consultables. Vous pouvez ajuster l'intervalle d'actualisation pour équilibrer les performances d'indexation et le temps d'attente des recherches.
De même, l'intervalle de vidage contrôle la fréquence à laquelle Elasticsearch écrit des données depuis la mémoire sur le disque. L'ajustement de ces intervalles peut avoir un impact sur le débit d'indexation et l'utilisation des ressources. Un vidage Elasticsearch effectue une validation Lucene et démarre une nouvelle génération translog. Les vidages sont effectués automatiquement en arrière-plan pour s'assurer que la taille du translog ne devienne pas trop importante, ce qui rendrait la réexécution de ses opérations très longue pendant la récupération.
Pour plus d'informations, voir Modules d'index.
Pour plus d'informations, voir Translog.
-
- Durabilité du translog
-
Le translog est un journal des transactions qui garantit la durabilité des données en cas d'échec du nœud. Ajustez les paramètres de durabilité du translog pour équilibrer la sécurité des données et les performances d'indexation. Pour plus d'informations, voir Translog.
Lorsqu'un document est indexé ou mis à jour dans Elasticsearch, il est d'abord écrit dans le translog avant d'être écrit dans l'index. Cela permet à Elasticsearch de récupérer les modifications en cas d'échecs ou de redémarrages du nœud. Le translog agit comme une mémoire tampon, stockant temporairement les modifications jusqu'à ce qu'elles soient vidées sur le disque et fassent partie intégrante de l'index.-
- Durabilité de la requête
- Avec la durabilité de la requête, chaque requête d'indexation ou de mise à jour est synchronisée sur le disque avant qu'une réponse ne soit renvoyée au client. Cela garantit que les modifications sont immédiatement durables, mais peuvent avoir un impact sur les performances en raison de la surcharge de synchronisation du disque.
-
- Paramètres de durabilité du translog
-
Elasticsearch fournit des paramètres de configuration pour contrôler la durabilité du translog. Paramètres :
-
- translog.sync_interval
- Indique l'intervalle de temps respecté entre les opérations de synchronisation. Les modifications apportées au translog sont régulièrement synchronisées sur le disque en fonction de cet intervalle.
-
- translog.durability
- Contrôle le niveau de durabilité du translog. Il peut être défini sur
request,asyncourequest_syncpour équilibrer les performances et la durabilité.
-
Par défaut, Elasticsearch utilise le mode de durabilité
async, où les modifications sont régulièrement synchronisées sur le disque, mais pas nécessairement après chaque requête. Cela permet d'équilibrer la durabilité et les performances.Pour plus d'informations, voir Translog.
-
-
- Agrégations
- Elasticsearch fournit de puissantes capacités d'agrégation, mais des agrégations complexes peuvent avoir un impact sur les performances. Vous pouvez régler les paramètres d'agrégation, tels que search.max_buckets et indexs.breaker.total.limit, pour contrôler l'utilisation de la mémoire et limiter le nombre de compartiments produits par les agrégations.
Pour plus de détails, voir Agrégations.
-
- Taille du fragment
- Chaque fragment dans Elasticsearch est associé à un certain temps système, de sorte qu'avoir un grand nombre de petits fragments peut avoir un impact sur les performances. Il est essentiel d'équilibrer le nombre de fragments et la taille de chaque fragment en fonction de votre volume de données et de vos ressources matérielles.
-
- Allocation de fragments
- Les fragments sont les unités de base de la distribution de données dans Elasticsearch. Par défaut, Elasticsearch tente de distribuer les fragments uniformément entre les nœuds. Toutefois, vous pouvez contrôler les paramètres d'allocation des fragments pour garantir une utilisation équilibrée des ressources et optimiser les performances du cluster.
-
- Routage des fragments
- Elasticsearch distribue les fragments entre les nœuds en fonction d'un algorithme de hachage. Vous pouvez influencer le routage des fragments en personnalisant le processus d'allocation de fragments à l'aide de filtres d'allocation de fragments et de paramètres de reconnaissance d'allocation. Cela permet d'équilibrer la distribution des données et d'améliorer les performances du cluster.
-
- Paramètres réseau
- L'ajustement des paramètres réseau, tels que les configurations TCP, peut avoir un impact sur les performances et la réactivité d'Elasticsearch. Pour garantir une communication réseau efficace, vous pouvez optimiser des paramètres tels que le maintien de TCP, les mémoires tampons socket et les délais d'attente de connexion.
-
- Sérialisation et compression des données
- Elasticsearch permet de configurer les options de sérialisation et de compression des données, telles que l'utilisation d'un format binaire plus efficace (comme SMILE ou CBOR) ou l'activation de la compression pour la communication réseau. Ces paramètres peuvent améliorer l'efficacité du stockage et réduire la surcharge du réseau.
Pour plus d'informations, voir Economiser de l'espace et de l'argent en améliorant l'efficacité du stockage dans Elasticsearch 7.10.
Pour plus d'informations, voir Modules d'index.
Tous ces boutons de réglage offrent de la flexibilité pour optimiser Elasticsearch en fonction de votre charge de travail spécifique, des ressources matérielles et des exigences de performances. Il est essentiel de surveiller attentivement l'impact des changements et d'effectuer des tests de performances pour garantir des résultats optimaux. En outre, reportez-vous toujours à la documentation Elasticsearch officielle et prenez en compte les recommandations fournies par Elastic pour le réglage et l'optimisation.