Медленная скорость индекса Elasticsearch
Мы развернули ES 2.0 на 3 узлах EC2 c4.4xlarge (16 ядер, 32 ГБ), выделив 16G для ES, подключив 500 ГБ с IOPS io1/4000 на каждом.
Проблема. Мы ожидаем большой производительности из этой конфигурации оборудования, однако наблюдается очень медленная скорость индексирования.
Наш документ размером около 10-50 тыс., мы используем транспортный клиент Java для вставки. Скорость была в порядке для первых 50 000 при примерно 1000/секунду и резко замедлялась до 100-200/секунд.
В то же время мы смотрим на низкое потребление ресурсов:
- CPU составляет только 1-20% (16 ЦП Core)
- Запись IO составляет всего 4-10 Мб/с.
- Объем памяти составляет около 20-30%.
Требования. Поэтому я не могу понять, почему он настолько медленный, пока все ресурсы настолько свободны, что я могу сделать для повышения эффективности? Спасибо.
>
Вот файл конфигурации, который мы используем:
cluster.name: {{ env }}-{{ app }}
path.data: /data/es
path.logs: /data/es-logs
network.host: 0.0.0.0
discovery.zen.ping.unicast.hosts: ["xxxx"]
bootstrap.mlockall: true
threadpool.search.queue_size: 300
threadpool.index.type: fixed
threadpool.index.size: 16
threadpool.index.queue_size: 250000
index.refresh_interval: 1s
index.translog.flush_threshold_ops: 50000
indices.memory.index_buffer_size: 30%
indices.memory.min_shard_index_buffer_size: 12mb
indices.memory.min_index_buffer_size: 96mb
script.inline: on
script.indexed: on
http.cors.enabled: true
http.cors.allow-origin: /https?:\/\/localhost(:[0-9]+)?/
Вот htop и iostat во время выполнения задания:
![htop]()
![iostat]()
Ответы
Ответ 1
Обновите свою ES до последней версии, потому что в последних выпусках они сделали ее более дружественной к производству, а наиболее стабильная версия теперь последней версии 2.3
Вы можете попробовать следующие вещи, чтобы ускорить индексирование:
- Создайте несколько основных узлов, отдельно от узлов данных, поскольку это уменьшит нагрузку на весь ваш кластер.
- Отключить замену ОС, ES позаботится об этом и проверить размер вашей кучи на всех ваших машинах Размер кучи
- Проверяйте, что ваши документы имеют одинаковый размер, вы можете использовать индексирование большого объема и настраивать настройки там, например chunk_size, в количестве записей или в размере памяти.
- Если вы используете script, попробуйте оптимизировать это, поскольку они замедляют индексирование, вы можете сохранить сценарийное значение, если это возможно, в качестве предварительной обработки, поскольку ES не предназначен для обработки сценариев.
- Проверить количество осколков на node и попытаться сбалансировать это через узлы с помощью маршрутизации
- Подробнее о том, как ребята из ES предлагают готовую систему производства для работы Elasticsearch in Production
- Еще один блог об увеличении производительности индексирования Elasticsearch Рекомендации по производительности для индексации Elasticsearch
Проверьте этот ответ для оптимального способа установки ELK Stack на трех серверах. Оптимальный способ установки стека ELK на трех серверах