# Lucene Merge Thread в hot threads

**URL:** <https://discuss.elastic.co/t/lucene-merge-thread-hot-threads/191169>\
**Category:** Вопросы на русском языке\
**Created:** [July 18, 2019, 9:26am UTC](https://discuss.elastic.co/t/lucene-merge-thread-hot-threads/191169 "2019-07-18T09:26:17Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![Denis\_Lamanov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/denis_lamanov/32/13111_2.png) [@Denis\_Lamanov](https://discuss.elastic.co/u/Denis_Lamanov)\
**Post date:** [July 18, 2019, 9:26am UTC](https://discuss.elastic.co/t/lucene-merge-thread-hot-threads/191169/1 "2019-07-18T09:26:17Z")

</div>

Добрый день!

В последние 2 дня наблюдаем на одной ноде нагрузку в 1.5-2 раза больше чем на других по i/o  
В hot threads постоянно вижу там:

`41.8% (208.8ms out of 500ms) cpu usage by thread 'elasticsearch[node-00][[session_201907_2][4]: Lucene Merge Thread #7552]'`

Т.е. мёржатся сегменты на индексе в который запись уже не идёт. Причём это начинается каждый день в 12 часов.  
Можно ли этого как-то избежать?  
На всех индексах и шаблонах для новых включил index.merge.scheduler.max\_thread\_count = 1, т.к. у нас рейды из обычных дисков

Спасибо

---

<div class="post-metadata">

**Author:** ![Igor\_Motov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/igor_motov/32/45193_2.png) [@Igor\_Motov](https://discuss.elastic.co/u/Igor_Motov)\
**Post date:** [July 18, 2019, 3:20pm UTC](https://discuss.elastic.co/t/lucene-merge-thread-hot-threads/191169/2 "2019-07-18T15:20:49Z")

</div>

Какая версия?

---

<div class="post-metadata">

**Author:** ![Denis\_Lamanov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/denis_lamanov/32/13111_2.png) [@Denis\_Lamanov](https://discuss.elastic.co/u/Denis_Lamanov)\
**Post date:** [July 18, 2019, 3:50pm UTC](https://discuss.elastic.co/t/lucene-merge-thread-hot-threads/191169/3 "2019-07-18T15:50:52Z")

</div>

Elasticsearch 6.8.1. Планируем обновиться до 7.х

---

<div class="post-metadata">

**Author:** ![Igor\_Motov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/igor_motov/32/45193_2.png) [@Igor\_Motov](https://discuss.elastic.co/u/Igor_Motov)\
**Post date:** [July 18, 2019, 5:11pm UTC](https://discuss.elastic.co/t/lucene-merge-thread-hot-threads/191169/4 "2019-07-18T17:11:25Z")

</div>

А 12 часов - это в какой часовой зоне? Просто в elasticsearch такие вещи сами по себе не происходят. Это, скорее всего, либо ILM, либо какой-то внешний процесс типа curator или что-то в этом роде.

---

<div class="post-metadata">

**Author:** ![Denis\_Lamanov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/denis_lamanov/32/13111_2.png) [@Denis\_Lamanov](https://discuss.elastic.co/u/Denis_Lamanov)\
**Post date:** [July 19, 2019, 7:22am UTC](https://discuss.elastic.co/t/lucene-merge-thread-hot-threads/191169/5 "2019-07-19T07:22:31Z")

</div>

В 12 по UTC. ILM, curator не используем, только чистый Elasticsearch. Установив index.merge.scheduler.max\_thread\_count = 1 удалось немного уменьшить нагрузку на ту ноду. Но разрыв по нагрузке в 2 раза вечером остаётся. Трафик льётся по шардам абсолютно равномерно per node - тут перекоса нет нигде.  
Насколько я понял можно попробовать уменьшить disk i/o увеличив index.translog.flush\_threshold\_size

---

<div class="post-metadata">

**Author:** ![Denis\_Lamanov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/denis_lamanov/32/13111_2.png) [@Denis\_Lamanov](https://discuss.elastic.co/u/Denis_Lamanov)\
**Post date:** [July 19, 2019, 2:34pm UTC](https://discuss.elastic.co/t/lucene-merge-thread-hot-threads/191169/6 "2019-07-19T14:34:52Z")

</div>

Проверил всё что можно, но на одной ноде(node00) большой перекос по нагрузке. Она, кстати, выбрана в ходе выборов как master.

hot\_threads на ноде высоконагруженной: [https://gist.github.com/UkrZilla/8ef45948b351456c054cb9bbe2b90241](https://gist.github.com/UkrZilla/8ef45948b351456c054cb9bbe2b90241)

hot\_threads на ноде с нормальной нагрузкой: [https://gist.github.com/UkrZilla/0821bc19f4e1adf298e3d719d8de6727](https://gist.github.com/UkrZilla/0821bc19f4e1adf298e3d719d8de6727)

---

<div class="post-metadata">

**Author:** ![Igor\_Motov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/igor_motov/32/45193_2.png) [@Igor\_Motov](https://discuss.elastic.co/u/Igor_Motov)\
**Post date:** [July 19, 2019, 3:09pm UTC](https://discuss.elastic.co/t/lucene-merge-thread-hot-threads/191169/7 "2019-07-19T15:09:31Z")

</div>

Может быть, просто так получилось, что на node00 попали шарды, в которые вы особенно интенсивно индексируете? Я там ничего, кроме

---

<div class="post-metadata">

**Author:** ![Denis\_Lamanov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/denis_lamanov/32/13111_2.png) [@Denis\_Lamanov](https://discuss.elastic.co/u/Denis_Lamanov)\
**Post date:** [July 19, 2019, 3:13pm UTC](https://discuss.elastic.co/t/lucene-merge-thread-hot-threads/191169/8 "2019-07-19T15:13:14Z")

</div>

У нас 7 нод

У всех индексов: "number\_of\_shards": "7", "number\_of\_replicas": "1"

Я думал, что в таком случае т.к. у каждой ноды есть своя primary шарда индекса, то и нагрузка по индексации будет равномерной

На месяц мы отключали ребаланс шард:  
"cluster.routing.rebalance.enable" : none

Вчера вернули, но ничего не поменялось

---

<div class="post-metadata">

**Author:** ![Igor\_Motov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/igor_motov/32/45193_2.png) [@Igor\_Motov](https://discuss.elastic.co/u/Igor_Motov)\
**Post date:** [July 19, 2019, 3:37pm UTC](https://discuss.elastic.co/t/lucene-merge-thread-hot-threads/191169/9 "2019-07-19T15:37:15Z")

</div>

> [@Denis\_Lamanov](#):
>
> Я думал, что в таком случае т.к. у каждой ноды есть своя primary шарда индекса, то и нагрузка по индексации будет равномерной

Это не факт. Посмотрите, как на самом деле шарды распеределены [cat shards API | Elasticsearch Guide [8.11] | Elastic](https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-shards.html)

---

<div class="post-metadata">

**Author:** ![Denis\_Lamanov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/denis_lamanov/32/13111_2.png) [@Denis\_Lamanov](https://discuss.elastic.co/u/Denis_Lamanov)\
**Post date:** [July 19, 2019, 4:22pm UTC](https://discuss.elastic.co/t/lucene-merge-thread-hot-threads/191169/10 "2019-07-19T16:22:16Z")

</div>

Приблизительно одинаково, сгруппировал ноды по primary shard count:

```
node-00 1421
node-01 1530
node-02 1295
node-03 1224
node-04 1543
node-05 1145
node-06 1152

```

Насколько я понял можно попробовать увеличить коэффициент `cluster.routing.allocation.balance.shard` чтобы включить выравнивание

---

<div class="post-metadata">

**Author:** ![Igor\_Motov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/igor_motov/32/45193_2.png) [@Igor\_Motov](https://discuss.elastic.co/u/Igor_Motov)\
**Post date:** [July 19, 2019, 4:55pm UTC](https://discuss.elastic.co/t/lucene-merge-thread-hot-threads/191169/11 "2019-07-19T16:55:32Z")

</div>

Я думаю, что не в количестве дело, а в качестве. У вас ведь на во все 1421 шарды на node-00 каждый день все индексируется. Важно количество активных на данный момент шард и их принадлежность к индесксам.

> [@Denis\_Lamanov](#):
>
> Насколько я понял можно попробовать увеличить коэффициент `cluster.routing.allocation.balance.shard` чтобы включить выравнивание

Если очень надо что-то покрутить, то я бы стал куртить `cluster.routing.allocation.balance.index`. Но лучше, все-таки сначала разобраться в чем проблема.

---

<div class="post-metadata">

**Author:** ![Denis\_Lamanov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/denis_lamanov/32/13111_2.png) [@Denis\_Lamanov](https://discuss.elastic.co/u/Denis_Lamanov)\
**Post date:** [July 19, 2019, 5:10pm UTC](https://discuss.elastic.co/t/lucene-merge-thread-hot-threads/191169/12 "2019-07-19T17:10:46Z")

</div>

В том-то и дело, что в 99% индексов идёт запись в реальном времени через bulk insert, конечно

Раньше, до отключения ребаланса шард, кластер активно, я бы сказал агрессивно, делал ребаланс гоняя данные на гигабитных скоростях

---

<div class="post-metadata">

**Author:** ![Denis\_Lamanov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/denis_lamanov/32/13111_2.png) [@Denis\_Lamanov](https://discuss.elastic.co/u/Denis_Lamanov)\
**Post date:** [July 23, 2019, 7:56am UTC](https://discuss.elastic.co/t/lucene-merge-thread-hot-threads/191169/13 "2019-07-23T07:56:54Z")

</div>

Проанализировав нагрузку выяснили, что 90% нагрузки идёт от одного лога. Отключив его индексацию перекос уменьшился значительно. Настолько, что его почти не видно, т.к. тот лог очень большой, с большим мэппингом и события очень часто происходят.  
Шарды индекса этого лога распределены равномерно по нодам, поэтому непонятно почему нагрузка индексации ложится только на одну ноду

---

<div class="post-metadata">

**Author:** ![Igor\_Motov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/igor_motov/32/45193_2.png) [@Igor\_Motov](https://discuss.elastic.co/u/Igor_Motov)\
**Post date:** [July 23, 2019, 1:12pm UTC](https://discuss.elastic.co/t/lucene-merge-thread-hot-threads/191169/14 "2019-07-23T13:12:10Z")

</div>

Раутинг или parent/child отношения используются?

---

<div class="post-metadata">

**Author:** ![Denis\_Lamanov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/denis_lamanov/32/13111_2.png) [@Denis\_Lamanov](https://discuss.elastic.co/u/Denis_Lamanov)\
**Post date:** [July 23, 2019, 2:25pm UTC](https://discuss.elastic.co/t/lucene-merge-thread-hot-threads/191169/15 "2019-07-23T14:25:07Z")

</div>

Ничего такого не используем. Сейчас перезагрузили эту ноду. Выбрался новый master, поднимутся все шарды и посмотрим

С нетерпением ждём 7.3 ([https://github.com/elastic/elasticsearch/pull/43616](https://github.com/elastic/elasticsearch/pull/43616))

---

<div class="post-metadata">

**Author:** ![Denis\_Lamanov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/denis_lamanov/32/13111_2.png) [@Denis\_Lamanov](https://discuss.elastic.co/u/Denis_Lamanov)\
**Post date:** [July 23, 2019, 7:33pm UTC](https://discuss.elastic.co/t/lucene-merge-thread-hot-threads/191169/16 "2019-07-23T19:33:13Z")

</div>

Есть новости: обычно после перезагрузки ноды на ней мало primary shard, но постепенно она их набирала за сутки, двое до приблизительно одинакового количества как на других нодах и кластер опять становился сбалансирован. Но сейчас, после перезагрузки, на ней только 4 primary, остальные реплики, и ничего не меняется.  
Есть предположение, которое и раньше выдвигал, что подействовало отключение ребаланса шард. Впрочем позже мы его включили обратно, но вероятно кластер заполнил. Ведь всего одна нода была перезагружена. Но это единственное что из настроек мы трогали и только предположение.

---

<div class="post-metadata">

**Author:** ![Igor\_Motov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/igor_motov/32/45193_2.png) [@Igor\_Motov](https://discuss.elastic.co/u/Igor_Motov)\
**Post date:** [July 23, 2019, 8:00pm UTC](https://discuss.elastic.co/t/lucene-merge-thread-hot-threads/191169/17 "2019-07-23T20:00:05Z")

</div>

Нагрузка на праймари и репликах должна быть идентична, если только вы не выполняете какие-нибудь тяжелые операции update.

---

<div class="post-metadata">

**Author:** ![Denis\_Lamanov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/denis_lamanov/32/13111_2.png) [@Denis\_Lamanov](https://discuss.elastic.co/u/Denis_Lamanov)\
**Post date:** [August 1, 2019, 12:05pm UTC](https://discuss.elastic.co/t/lucene-merge-thread-hot-threads/191169/18 "2019-08-01T12:05:14Z")

</div>

Никаких update не делаем. Всё излечилось полным перезапуском кластера и обновлением до 6.8.2

---

<div class="post-metadata">

**Author:** ![Denis\_Lamanov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/denis_lamanov/32/13111_2.png) [@Denis\_Lamanov](https://discuss.elastic.co/u/Denis_Lamanov)\
**Post date:** [August 3, 2019, 7:02pm UTC](https://discuss.elastic.co/t/lucene-merge-thread-hot-threads/191169/19 "2019-08-03T19:02:18Z")

</div>

Воспроизвели опять баг и выяснили, что такое происходит при удалении группы закрытых индексов. Индексы удаляются, а что потом происходит в кластере - неясно. Но снижение производительности индексации, перекос нагрузки по нодам на лицо

---

<div class="post-metadata">

**Author:** ![Igor\_Motov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/igor_motov/32/45193_2.png) [@Igor\_Motov](https://discuss.elastic.co/u/Igor_Motov)\
**Post date:** [August 5, 2019, 1:47pm UTC](https://discuss.elastic.co/t/lucene-merge-thread-hot-threads/191169/20 "2019-08-05T13:47:16Z")

</div>

А индексы были закрыты до обновления или после? С какой версии обновлялись?

[Next page](https://discuss.elastic.co/t/lucene-merge-thread-hot-threads/191169.md?page=2)
