2015-11-27 5 views
14

Мы развернули ES 2.0 на 3 узлах EC2 c4.4xlarge (16 ядер, 32gb памяти), выделив 16G для ES, подключив 500 ГБ с IO1/4000 IOPS на каждом.Медленная скорость индекса Elasticsearch

Проблема: Мы ожидаем высокую производительность от этой аппаратной конфигурации, однако очень низкая скорость индексации наблюдается.

Наш документ размером около 10-50 КБ, мы используем транспортный клиент Java для вставки. Скорость была в порядке для первых 50 000 при примерно 1000/секунду и резко замедлялась до 100-200/сек.

В то же время мы ищем на низкое потребление ресурсов:

  1. CPU составляет около 1-20% только (16 Ядро процессора)
  2. IO записи составляет около 4-10Mb/второй только
  3. потребление памяти составляет около 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

+0

Вы делаете массовое индексирование? сколько реплик у вас есть? сколько настроек ES по умолчанию вы изменили? – ChintanShah25

+0

мы симулируем высокую одновременную запись. 5 осколков и 2 реплики. Я обновил файл настроек FYI. –

+0

Вы выполняете 'операции поиска' при' объемном индексировании'? также запросы индексирования идут на один узел или все три? – ChintanShah25

ответ

8

Обновите ES до последней версии, потому что в последние выпуски сделали их более дружественными к производству, и самый стабильный выпуск теперь является последним. 2.3

Вы можете попробовать следующие вещи, чтобы сделать индексацию идти быстрее:

  1. сделать некоторые основные узлы, выделенные из узлов данных, поскольку это позволит снизить нагрузку на всем кластере.
  2. Отключить OS подкачка, ES заботится о том, что и Проверьте размер кучи на все машины Heap Sizing
  3. Проверьте ваши документы одинакового размера всегда, вы можете использовать насыпную индексацию и настройки вам настройки там, как chunk_size в количество записей или размер памяти
  4. Если вы используете скрипт, попробуйте оптимизировать это, поскольку медленное индексирование замедляет, вы можете сохранить скриптовое значение, если это возможно, в качестве предварительной обработки, поскольку ES не предназначен для обработки сценариев.
  5. Проверить количество черепков на узел и попытаться сбалансировать, что из по узлам с использованием Маршрутизация
  6. Подробнее о том, как ES ребята предполагают производство готовую систему для работы Elasticsearch in Production
  7. Один больше блог об увеличении Elasticsearch производительности индексирования Performance Considerations for Elasticsearch Indexing

Проверьте этот ответ для оптимального способа установки стека ELK на трех серверах. Optimal way to set up ELK stack on three servers

Смежные вопросы