# Неожиданный java.io.IOException: failed to obtain in-memory shard lock

**URL:** https://discuss.elastic.co/t/java-io-ioexception-failed-to-obtain-in-memory-shard-lock/153572
**Category:** Вопросы на русском языке
**Created:** [October 23, 2018, 10:03am UTC](https://discuss.elastic.co/t/java-io-ioexception-failed-to-obtain-in-memory-shard-lock/153572 "2018-10-23T10:03:29Z")
**Posts on this page:** 18
**Page:** 1

<div class="post-metadata">

### Author: ![111126](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/111126/32/36818_2.png) [@111126](https://discuss.elastic.co/u/111126)
#### Post date: [October 23, 2018, 10:03am UTC](https://discuss.elastic.co/t/java-io-ioexception-failed-to-obtain-in-memory-shard-lock/153572/1 "2018-10-23T10:03:30Z")

</div>

Elastic версии 6.4.2  
4 дата-ноды, две hot и две warm + одна мастер нода  
Общий объем данных 22Тб, индексов 199, шардов 1038, документов 20млрд  
На hot нодах занято около 600Гб, остальное лежит на warm.  
Вчера днем происходит неожиданный unnsigned шард для индекса netflow-2018.10.22 (лежит на hot нодах, два праймари шарда и две реплики) индекс самый активный из всех по части индексации (около 3000 праймари событий в секунду). В логи заглянуть времени не было, принудительный reroute не помог. Отключил реплику для индекса, а затем включил снова, реплики создались и кластер позеленел.  
Далее в 16:30 ситуация повторилась с тем же индексом с тем же шардом. reroute снова не помог, полез в логи, пока изучал прошло какое-то время и при очередной попытке сработал reroute, шард распределился и кластер позеленел.  
Помогите понять чем вызвана такая проблема и как с ней бороться?  
Вот ссылка на логи [https://pastebin.com/sX9UsR0Y](https://pastebin.com/sX9UsR0Y)

---

<div class="post-metadata">

### Author: ![Vladimir.Dolzhenko](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/vladimir.dolzhenko/32/34352_2.png) [@Vladimir.Dolzhenko](https://discuss.elastic.co/u/Vladimir.Dolzhenko)
#### Post date: [October 23, 2018, 10:49am UTC](https://discuss.elastic.co/t/java-io-ioexception-failed-to-obtain-in-memory-shard-lock/153572/2 "2018-10-23T10:49:02Z")

</div>

Первое, что приходит в голову - из-за большой нагрузки на ноду случилась более длинная, чем timeout GC пауза. Посмотрите в gc log-и и возможно стоит увеличить timeout-ы.

---

<div class="post-metadata">

### Author: ![111126](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/111126/32/36818_2.png) [@111126](https://discuss.elastic.co/u/111126)
#### Post date: [October 23, 2018, 11:52am UTC](https://discuss.elastic.co/t/java-io-ioexception-failed-to-obtain-in-memory-shard-lock/153572/3 "2018-10-23T11:52:59Z")

</div>

> [@Vladimir.Dolzhenko](#):
>
> Посмотрите в gc log-и и возможно стоит увеличить timeout-ы.

А можно подробнее, где этот gc log и о каких таймаутах идет речь и где их крутить?

---

<div class="post-metadata">

### Author: ![Vladimir.Dolzhenko](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/vladimir.dolzhenko/32/34352_2.png) [@Vladimir.Dolzhenko](https://discuss.elastic.co/u/Vladimir.Dolzhenko)
#### Post date: [October 23, 2018, 11:56am UTC](https://discuss.elastic.co/t/java-io-ioexception-failed-to-obtain-in-memory-shard-lock/153572/4 "2018-10-23T11:56:57Z")

</div>

gc логи: `logs/gc.log*`

ping timeout: [https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-discovery-zen.html](https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-discovery-zen.html)

---

<div class="post-metadata">

### Author: ![111126](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/111126/32/36818_2.png) [@111126](https://discuss.elastic.co/u/111126)
#### Post date: [October 23, 2018, 12:25pm UTC](https://discuss.elastic.co/t/java-io-ioexception-failed-to-obtain-in-memory-shard-lock/153572/5 "2018-10-23T12:25:40Z")

</div>

У меня конфиг такой  
[https://pastebin.com/90nf27sk](https://pastebin.com/90nf27sk)  
Судя по всему он тянется еще со старых версий эластика. GC логов нет.

Рядом еще лежит вот такой, видимо прилетел с последним rpm эластика:  
[https://pastebin.com/ymALL3nm](https://pastebin.com/ymALL3nm)

Java у меня от oracle , восьмой версии. Перейти на новый jvm конфиг чтобы началась сборка gc логов и наблюдать дальше за ситуацией?  
Можно ли как-то разобрать текущую ситуацию без gc логов?

Вы говорите о том что кластер был перегружен, но по мониторингу никакой излишней нагрузки до падения (напомню оно было примерно в 16:30) не наблюдается, вот скрин ноды на которой отлетел шард:

 ![image](https://us1.discourse-cdn.com/elastic/original/3X/f/e/fec9f0acb752aa8b15664bd5e6aef66ab842a991.png)

---

<div class="post-metadata">

### Author: ![Vladimir.Dolzhenko](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/vladimir.dolzhenko/32/34352_2.png) [@Vladimir.Dolzhenko](https://discuss.elastic.co/u/Vladimir.Dolzhenko)
#### Post date: [October 23, 2018, 12:44pm UTC](https://discuss.elastic.co/t/java-io-ioexception-failed-to-obtain-in-memory-shard-lock/153572/6 "2018-10-23T12:44:10Z")

</div>

Боюсь, что без gc логов это будет гаданием на кофейной гуще

во втором конфиге написано

```auto
8:-Xloggc:/var/log/elasticsearch/gc.log

```

ищите логи там

что касается нагрузки: по графикам видно, что размер heap-а уменьшается с ~23Gb до ~6-7Gb каждые полчаса - это вполне укладывается в работу GC, которая могла вызывать неотзывчивость jvm.

---

<div class="post-metadata">

### Author: ![111126](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/111126/32/36818_2.png) [@111126](https://discuss.elastic.co/u/111126)
#### Post date: [October 24, 2018, 8:39am UTC](https://discuss.elastic.co/t/java-io-ioexception-failed-to-obtain-in-memory-shard-lock/153572/7 "2018-10-24T08:39:49Z")

</div>

@Igor_Motov Игорь, я извиняюсь, но очень хочется узнать Ваше мнение по моему вопросу.

---

<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: [October 24, 2018, 3:37pm UTC](https://discuss.elastic.co/t/java-io-ioexception-failed-to-obtain-in-memory-shard-lock/153572/8 "2018-10-24T15:37:51Z")

</div>

> [@111126](#):
>
> @Igor_Motov Игорь, я извиняюсь, но очень хочется узнать Ваше мнение по моему вопросу.

Я обычно читаю все сообщения в форуме. Молчу, потому что добавить мне, в общем-то, нечего. Судя по всему нода данных потеряла связь с мастером или наоборот, обычно это бывает из-за GC как @Vladimir.Dolzhenko уже и сказал. Другие возможные проблемы - сеть, перегрузка машины, перегрузка VM, и т.д. Долгая сборка мусора - наиболее частый симптом.

---

<div class="post-metadata">

### Author: ![111126](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/111126/32/36818_2.png) [@111126](https://discuss.elastic.co/u/111126)
#### Post date: [October 25, 2018, 9:07am UTC](https://discuss.elastic.co/t/java-io-ioexception-failed-to-obtain-in-memory-shard-lock/153572/9 "2018-10-25T09:07:40Z")

</div>

Снова произошел сбой с потерей связи одной из нод с мастером java.io.IOException: Время ожидания соединения истекло, но в этот раз без java.io.IOException: failed to obtain in-memory shard lock, хотя часть шардов все равно стали Unassigned.  
Потеря связи произошла в 2018-10-25T10:50:46,100  
Вот gc.log [https://pastebin.com/QNaYgsq9](https://pastebin.com/QNaYgsq9), я если честно ничего в нем полезного не нашел к моему сожалению.  
ВОт скрин ноды за 10 минут до потери связи с мастером и 10 минут после:

 ![image](https://us1.discourse-cdn.com/elastic/original/3X/2/0/202537c56d8d73b4f57b521d71e93fd62ce47cba.png)

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

---

<div class="post-metadata">

### Author: ![111126](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/111126/32/36818_2.png) [@111126](https://discuss.elastic.co/u/111126)
#### Post date: [November 7, 2018, 9:00am UTC](https://discuss.elastic.co/t/java-io-ioexception-failed-to-obtain-in-memory-shard-lock/153572/10 "2018-11-07T09:00:21Z")

</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: [November 7, 2018, 3:02pm UTC](https://discuss.elastic.co/t/java-io-ioexception-failed-to-obtain-in-memory-shard-lock/153572/11 "2018-11-07T15:02:42Z")

</div>

Вы не могли бы прислать полный лог с ноды, которая упала и с мастера в день, когда произошел сбой?

---

<div class="post-metadata">

### Author: ![111126](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/111126/32/36818_2.png) [@111126](https://discuss.elastic.co/u/111126)
#### Post date: [November 7, 2018, 4:17pm UTC](https://discuss.elastic.co/t/java-io-ioexception-failed-to-obtain-in-memory-shard-lock/153572/12 "2018-11-07T16:17:15Z")

</div>

> [@Igor\_Motov](#):
>
> Вы не могли бы прислать полный лог с ноды, которая упала и с мастера в день, когда произошел сбой?

Игорь, к сожалению не могу вывалить логи в общий доступ.  
Выслал вам архив с логами на почту.

---

<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: [November 7, 2018, 4:30pm UTC](https://discuss.elastic.co/t/java-io-ioexception-failed-to-obtain-in-memory-shard-lock/153572/13 "2018-11-07T16:30:51Z")

</div>

> [@111126](#):
>
> никакой излишней нагрузки до падения (напомню оно было примерно в 16:30) не наблюдается

Странно, судя по логам перед падением все очереди на ноде переполняются. У вас все это на физическом железе или VM? Диски какие?

---

<div class="post-metadata">

### Author: ![111126](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/111126/32/36818_2.png) [@111126](https://discuss.elastic.co/u/111126)
#### Post date: [November 8, 2018, 6:58am UTC](https://discuss.elastic.co/t/java-io-ioexception-failed-to-obtain-in-memory-shard-lock/153572/14 "2018-11-08T06:58:21Z")

</div>

конкретно srv04 это физический сервер, имеет 6 дисков с вот такими характеристиками:

> Interface Type: SAS  
> Size: 600 GB  
> Rotational Speed: 15000

диски собраны в raid 1+0

---

<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: [November 8, 2018, 3:38pm UTC](https://discuss.elastic.co/t/java-io-ioexception-failed-to-obtain-in-memory-shard-lock/153572/15 "2018-11-08T15:38:00Z")

</div>

Пока из всего, что я видел, картина такая - перед выпадом ноды у нее все запросы на поиск и индексирование застревают. Интересно было бы подловить этот момент и посмотреть где они застряли. То есть если запустить jstack непосредственно перед моментом перегрузки, то это дало бы нам некоторую информацию, о том, что происходит.

А в среднем, сколько записей у вас в очередях поискового thread pool?

---

<div class="post-metadata">

### Author: ![111126](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/111126/32/36818_2.png) [@111126](https://discuss.elastic.co/u/111126)
#### Post date: [November 12, 2018, 9:00am UTC](https://discuss.elastic.co/t/java-io-ioexception-failed-to-obtain-in-memory-shard-lock/153572/16 "2018-11-12T09:00:39Z")

</div>

> [@Igor\_Motov](#):
>
> А в среднем, сколько записей у вас в очередях поискового thread pool?

Проверял вот так:

> GET /\_cat/thread\_pool/search?v&s=node\_name:desc

Очередь почти всегда нулевая, иногда (редко) бывает показывает не ноль, но меньше 10 всегда.  
Ну а как отловить момент когда выросла очередь но еще не отвалились шарды чтобы снять этот jstack, кейс выглядит нереально?  
Посмотреть jstack сразу как отвалились шарды не поможет?

---

<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: [November 12, 2018, 5:14pm UTC](https://discuss.elastic.co/t/java-io-ioexception-failed-to-obtain-in-memory-shard-lock/153572/17 "2018-11-12T17:14:33Z")

</div>

> Посмотреть jstack сразу как отвалились шарды не поможет?

Если сразу - то может помочь.

---

<div class="post-metadata">

### Author: ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)
#### Post date: [December 10, 2018, 5:14pm UTC](https://discuss.elastic.co/t/java-io-ioexception-failed-to-obtain-in-memory-shard-lock/153572/18 "2018-12-10T17:14:40Z")

</div>

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.
