Comparateur indépendant · sans classement payant
Accueil / Blog / Technique / Elasticsearch : dimensionner l’indexation sans voler la RAM de l’application

Elasticsearch : dimensionner l’indexation sans voler la RAM de l’application

Elasticsearch est gourmand en heap et en I/O. Sur un VPS partagé avec votre app, une réindexation mal calibrée peut faire OOM-killer votre PHP ou Node en pleine nuit.

Rédaction Hébergeurs.eu 4 min Mis à jour 19 juil. 2026

Vous ajoutez Elasticsearch à un VPS qui fait déjà tourner nginx, PHP-FPM et MySQL. L'import initial de 400 000 fiches produit se lance un vendredi soir. Deux heures plus tard, le site répond 502 : le kernel a tué php-fpm — pas elasticsearch — parce que la RAM était épuisée et que le cache disque ne compensait plus.

Elasticsearch n'est pas « une extension de MySQL ». C'est un moteur Java avec des pics d'I/O et de merge qui rivalise avec votre application pour les mêmes ressources.

Heap, cache et la règle des 50 %

Elasticsearch utilise la JVM pour le heap (structures in-memory) et s'appuie sur le filesystem cache de l'OS pour les segments Lucene.

RessourceRôleErreur fréquente
Heap JVMIndex buffers, requêtesTrop grand → GC pauses, OOM
FS cacheLecture segments disqueCompétition avec app + OS
CPUMerge, analyseSaturation pendant bulk
DisqueIOPS merge + translogHDD saturé en réindex

Règle officielle Elastic : heap ≈ 50 % de la RAM, max 32 Go. Au-delà, le garbage collector JVM perd en efficacité.

Sur un VPS 4–8 Go partagé avec l'app, vous êtes déjà en tension structurelle.

Indexation bulk sans faire trembler la machine

1. Throttle le débit


PUT _cluster/settings

{

  "persistent": {

    "indices.memory.index_buffer_size": "10%"

  }

}

Réduisez refresh_interval à 30s ou -1 pendant l'import massif, puis remettez 1s en prod.

2. Taille de batch — commencez autour de 1000–5000 docs, mesurez latence et rejets.

3. Fenêtre horaire — indexez la nuit si le VPS sert aussi le trafic jour.

4. Séparation des rôles — nœud ES dédié ou offre managée (Elastic Cloud, OpenSearch managé chez votre cloud).

Signaux d'alerte avant OOM

  • vmstat : si si/so (swap) monte pendant bulk.
  • docker stats ou htop : heap ES stable mais RAM totale à 100 %.
  • Latence application corrélée aux pics _bulk dans les logs ES.
  • Disque > 85 % — merge bloqué, cluster yellow/red.

Agissez avant le kill : pause bulk, augmentez RAM, ou migrez ES.

Le sommet : la recherche full-text ne justifie pas toujours Elasticsearch

Dimensionner l'indexation, c'est aussi questionner si ES doit vivre sur la même machine.

Décider et avancer sans angle mort

Calculez le budget RAM : heap Elasticsearch plus application plus système plus marge de 20 %. Si l'application est critique sur le même VPS, isolez Elasticsearch sur un nœud dédié ou une offre managée avant l'import massif. Passez les gros volumes par une file d'attente avec bulk throttle et refresh_interval temporairement relevé. Mesurez vmstat et docker stats pendant un import test — pas seulement le heap JVM. Comparez Elasticsearch managé et alternatives légères (Meilisearch, Typesense) via notre comparateur et l'annuaire si la recherche full-text simple suffit au métier.

Questions fréquentes

Combien de RAM allouer à Elasticsearch sur un VPS 8 Go ?

Heap ≤ 50 % RAM, ≤ 32 Go absolus. Sur 8 Go partagés, séparer les rôles est souvent préférable.

Pourquoi ma réindexation fait planter le serveur ?

Bulk sans throttle, merge intensif, cache privé de RAM — OOM killer sur l'app ou ES.

Faut-il indexer en synchrone depuis l'application ?

Non pour gros volumes — queue + workers bulk avec refresh_interval ajusté.

Managed Elasticsearch vaut-il le coût ?

Oui si indexation critique et petite équipe ; sinon Meilisearch ou Typesense sur VPS budget.


Avant d'indexer la nuit, une question : qui paie en RAM si le bulk dérape — Elasticsearch ou votre boutique en ligne ?

Comparez les hébergeurs européens

Filtrez par conformité, localisation et usage — puis ouvrez les fiches pour vérifier le périmètre réel.

Voir l'annuaire
Blog

À lire aussi

Tous les articles →