Что это значит

Elasticsearch работает на Java, и всё, что он держит в памяти (структуры индексов, агрегации, кэши), живёт в куче ограниченного размера. Когда её не хватает, Java выбрасывает OutOfMemoryError: Java heap space, а Elasticsearch при такой ошибке завершает процесс, перед этим записав fatal error in thread [...], exiting.

Частые причины: куча слишком мала для объёма данных и числа шардов; тяжёлая агрегация или запрос с огромным результатом; слишком много шардов на узле.

Как проверить

grep -E "OutOfMemoryError|fatal error" /var/log/elasticsearch/*.log | tail
curl -s localhost:9200/_cat/nodes?h=name,heap.percent,heap.max
curl -s localhost:9200/_cat/shards | wc -l

Что сделать

  1. Увеличить кучу параметрами -Xms и -Xmx (одинаковые значения, не больше половины памяти сервера и не больше примерно 31 ГБ). В решении вендора «Мониторинг Directum RX» это параметр es_java_memory_GB в секции мониторинга Directum Launcher.
  2. Сократить число шардов: объединять мелкие ежедневные индексы, удалять старые. Подробнее в статье про логи RX и шарды.
  3. Найти тяжёлые запросы в журнале медленных запросов и ограничить их.