RousselTMLEARNING

Observabilité

Performance et capacity planning Elasticsearch : shards, heap, indexation et benchmarks

Dimensionner et optimiser Elasticsearch : taille et nombre de shards, heap JVM, caches, réglages d'indexation (refresh, bulk, répliques), requêtes performantes, capacity planning et benchmarks avec Rally.

1. Shards #

Le premier facteur.

Dimensionnement #

Taille recommandée des shards
  • Viser 10 à 50 Go par shard primaire pour les logs ; le rollover par max_primary_shard_size le garantit.
  • Trop de petits shards : cluster state lourd, mémoire et requêtes gaspillées. Limite par défaut : 1 000 shards par nœud (cluster.max_shards_per_node).
  • Nombre de primaires d'un index à fort débit : de l'ordre du nombre de nœuds data hot, pour répartir l'écriture.

2. Mémoire et indexation #

Les réglages qui comptent.

Réglages #

RéglageRecommandation
Heap JVM≤ 50 % de la RAM (le reste sert au cache du système de fichiers, essentiel à Lucene) et sous ~31 Go
refresh_interval30 s ou plus pour les logs (1 s par défaut) : moins de segments, indexation plus rapide
Chargement initialnumber_of_replicas: 0 et refresh_interval: -1, puis rétablir
Bulk5 à 15 Mo par requête, plusieurs clients en parallèle, surveiller les rejets
ChampsPas de champ text inutile ; index: false sur les champs jamais recherchés
DisquesSSD locaux pour le tier hot

3. Mesurer #

Capacity planning.

Benchmark #

pip install esrally
esrally race --track=http_logs --target-hosts=es01:9200 --pipeline=benchmark-only \
  --client-options="use_ssl:true,verify_certs:false,basic_auth_user:'elastic',basic_auth_password:'$ES_PASSWORD'"
  1. Mesurer le débit d'indexation et la latence de recherche sur un nœud avec vos données (ou une piste Rally proche).
  2. En déduire le nombre de nœuds hot pour le débit cible, avec une marge de 30 %.
  3. Calculer le stockage : volume par jour × (1 + répliques) × rétention par tier × facteur d'index (souvent 1,1 à 1,5 par rapport aux données brutes).
  4. Revalider à chaque changement majeur de version ou de mapping.
Erreur Courante : Ne lancez jamais un benchmark Rally sur un cluster de production : il crée ses propres index et sature le cluster.

Articles liés

Architecture distribuée Elasticsearch : rôles des nœuds, shards, répliques et allocation

Comprendre le fonctionnement distribué d'Elasticsearch : rôles des nœuds, nœuds master et quorum, cluster sta…

Mappings et analyse de texte Elasticsearch : types de champs, analyseurs et mapping dynamique

Maîtriser les mappings Elasticsearch : types de champs (text, keyword, numériques, date, ip, nested), multi-f…

Ingestion Elasticsearch : Bulk API, ingest pipelines, enrich et reindex

Ingérer et transformer des données dans Elasticsearch : Bulk API, ingest pipelines et processeurs (grok, diss…

Pour aller plus loin