Запросы на массовую запись с эластичным поиском попадают на один и тот же узел кластера, в результате чего кластер отклоняет запись

#elasticsearch #apache-storm

Вопрос:

У меня есть кластер ElasticSearch 2.1.1 с 11 узлами. В большинстве случаев все идет хорошо, но когда нагрузка увеличивается (запись данных из нескольких топологий штормов), кажется, что все запросы на запись отправляются на один и тот же узел и заканчиваются тем, что узел перегружен своей очередью сверх предела, в то время как другие узлы просто сидят там и ничего не делают.

 node bulk.active bulk.queue
1       0           0
2       0           0
3       32          114
4       0           0
.and so on
 

И через некоторое время кластер начинает отклонять запросы на запись:

  nested: EsRejectedExecutionException[rejected execution
of org.elasticsearch.action.support.replication.TransportReplicationAction$PrimaryPhase$1@7e368c0b on EsThreadPoolExecutor[bulk, queue capacity = 50, org.elasticsearch.common.util.concurrent.EsThreadPoolExecutor@13ff1612[Running, pool size = 32, active threads = 32, queued tasks =
 55, completed tasks = 249363622]
 

После прохождения нагрузки она восстанавливается, но то же самое происходит каждый раз, когда нагрузка увеличивается.

Кто-нибудь сталкивался с чем-то подобным? В чем может быть причина?

Комментарии:

1. Во-первых, 2 вещи. вы говорите, что ваша версия Elasticsearch 2.2? во-вторых, что происходит, когда нагрузка средняя или нормальная? получают ли другие узлы запросы на запись?

2. Во-первых, хороший момент, на самом деле это 2.1.1, извините за ошибку, Во-вторых: похоже, что да, они получают некоторые запросы на запись, при проверке информации thread_pool.bulk я вижу разные завершенные и отклоненные на разных узлах.

3. Есть ли какие-либо журналы штормов на нимбусе или наблюдателях, которые могут быть полезны?