# Утечка файловых дескрипторов

**URL:** <https://discuss.elastic.co/t/topic/153466>\
**Category:** Вопросы на русском языке\
**Created:** [October 22, 2018, 6:59pm UTC](https://discuss.elastic.co/t/topic/153466 "2018-10-22T18:59:11Z")\
**Posts on this page:** 18\
**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:** [October 22, 2018, 6:59pm UTC](https://discuss.elastic.co/t/topic/153466/1 "2018-10-22T18:59:11Z")

</div>

Добрый день!)

Есть некие основания предполагать, что начиная с 6.4.0 у ElasticSearch есть утечка файловых дескрипторов. Тех самых, лимит на которые установлен в скриптах запуска в 65536  
И вот почему: у нас неправильно построенный кластер с кучей индексов на 2-х машинах и большим количеством RAM. И всё прекрасно работает и не тормозит. Периодически ручками удаляем старые индексы. Месяца 2 назад обновились с 6.3.0 на 6.4.0  
Этот кластер живёт уже 2 года. Сейчас у нас около 3700 шард.  
И вот, неделю назад на одном севере падает нода и в логах:  
max file descriptors for elasticsearch process is too low...  
К сожалению мы не мониторили этот параметр и мониториг в Кибане тоже и не могу сказать как быстро и после чего он стал расти.  
После того как увеличил значение в скриптах systemd в 10 раз до 655360 всё запустилось, заодно обновил до 6.4.2  
Начал мониторить этот параметр и, о ужас, я был удивлен, что после часа работы на каждой ноде процессом Эластика быо открыто около 80 000 файловых дескрипторов. Мониториг показывает, что их количество постепенно растёт, хотя количество индексов - нет. То есть ещё пару дней назад только подходило к лимиту в 65536 и тут сразу 80 000 ☹  
Могу предоставить всю необходимую информацию.

Заранее спасибо

---

<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 22, 2018, 7:18pm UTC](https://discuss.elastic.co/t/topic/153466/2 "2018-10-22T19:18:54Z")

</div>

Давайте начнем с вывода `GET /_nodes/stats/indices,process`

---

<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:** [October 22, 2018, 7:24pm UTC](https://discuss.elastic.co/t/topic/153466/3 "2018-10-22T19:24:51Z")

</div>

По лимиту не поместился Json в сыром виде здесь, залил: [https://pastebin.com/nr8FbjXD](https://pastebin.com/nr8FbjXD)

---

<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 22, 2018, 7:38pm UTC](https://discuss.elastic.co/t/topic/153466/4 "2018-10-22T19:38:00Z")

</div>

> Сейчас у нас около 3700 шард.

Это на весь кластер? Включая праймари и копии?

---

<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:** [October 22, 2018, 7:50pm UTC](https://discuss.elastic.co/t/topic/153466/5 "2018-10-22T19:50:35Z")

</div>

Извиняюсь, это на каждую дата-ноду. Всего 1603 индекса, 99% из них без реплик. На каждый индекс 4 шарды. Merge практически не помогает снизить количество fd.

---

<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 22, 2018, 8:16pm UTC](https://discuss.elastic.co/t/topic/153466/6 "2018-10-22T20:16:54Z")

</div>

Ну арифметика тут такая:

```auto
    "segments": {
      "count": 15590,
...
    "open_file_descriptors": 89310,

```

89310/15590 = 5.7 файлов на сегмент - это вполне нормально  
15590/3700=4.2 сегментов на шарду - это даже мало

Другими словами, для вашего количества шард, все выглядит вполне нормально. Другой вопрос в том, зачем вам такое огромное количество шард, если у вас всего 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:** [October 22, 2018, 8:22pm UTC](https://discuss.elastic.co/t/topic/153466/7 "2018-10-22T20:22:08Z")

</div>

Хороший вопрос) В ближайшие 2 месяца мы планируем резко увеличить количество нод до 7. Но самое интересное, что и в данной конфигурации нет проблем с производительностью. Разве что напрягает отсутствие реплик для всех индексов. Кстати, во график роста fd из Графаны:

![image](https://us1.discourse-cdn.com/elastic/original/3X/4/7/47422a5445624d7e28c2bb75730d54aaf8c066f6.png)

---

<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 22, 2018, 8:36pm UTC](https://discuss.elastic.co/t/topic/153466/8 "2018-10-22T20:36:00Z")

</div>

У вас, судя по всему, очень маленькие индексы - не очень понятно зачем им нужны 4 шарды.

---

<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:** [October 23, 2018, 8:28am UTC](https://discuss.elastic.co/t/topic/153466/9 "2018-10-23T08:28:59Z")

</div>

Размеры индексов, количество документов (Docs (Size) x Count):  
[https://pastebin.com/BL2zeY6M](https://pastebin.com/BL2zeY6M)

---

<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, 8:41am UTC](https://discuss.elastic.co/t/topic/153466/10 "2018-10-23T08:41:33Z")

</div>

Много индексов не то, что маленьких, а крохотных (килобайты или десятки мегабайт). При этом на каждый индекс создаётся экземпляр Lucene со всеми file halder-ами и прочими накладными расходами. Стоит пересмотреть подход к таким индексам в сторону их укрупнения, или вообще закрыть, если они не нужны.

---

<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:** [October 23, 2018, 8:54am UTC](https://discuss.elastic.co/t/topic/153466/11 "2018-10-23T08:54:11Z")

</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:** [October 24, 2018, 10:52am UTC](https://discuss.elastic.co/t/topic/153466/12 "2018-10-24T10:52:48Z")

</div>

Ребята, есть новости: количество индексов не увеличивалось, а количество fd росло, что заставило меня заняться поиском причины. Отсортировал папки с индексами по количеству файлов. И ужас:

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

Оказалось, что 2 индекса содержат файлов на несколько порядков больше. Сами же индесы занимают по 5 Мб. Их пишет другой отдел и выяснилось, что они делают update очень часто во время миграции. То есть эта куча файлов есть translog и его нужно как-то смёржить.  
Пробовал делать этим 2-м индексам forcemerge и synced flush - не помогает, хотя, согласено документации([https://www.elastic.co/guide/en/elasticsearch/guide/current/dynamic-indices.html](https://www.elastic.co/guide/en/elasticsearch/guide/current/dynamic-indices.html)) должно помочь

Есть какие-то идеи что делать?

Спасибо

---

<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 24, 2018, 11:44am UTC](https://discuss.elastic.co/t/topic/153466/13 "2018-10-24T11:44:30Z")

</div>

Можно получить детали внутри папок с индексами т.е сколько fd к каждому файлу ? там две большие части - `index` и `translog`

---

<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:** [October 24, 2018, 11:46am UTC](https://discuss.elastic.co/t/topic/153466/14 "2018-10-24T11:46:55Z")

</div>

Выставил для этих индексов:  
`"index.translog.retention.age": "1h"`  
Помогло. Кстати, как выставить 15 минут: "15m"?

---

<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 24, 2018, 11:52am UTC](https://discuss.elastic.co/t/topic/153466/15 "2018-10-24T11:52:31Z")

</div>

да 15минут это `15m`,

не нашёл лучшей документации

> <https://github.com/elastic/elasticsearch/blob/237650e9c054149fd08213b38a81a3666c1868e5/libs/core/src/test/java/org/elasticsearch/common/unit/TimeValueTests.java#L44>

---

<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:** [October 24, 2018, 12:29pm UTC](https://discuss.elastic.co/t/topic/153466/16 "2018-10-24T12:29:27Z")

</div>

Всем спасибо. Картина получилась сейчас такая

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

---

<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, 2:37pm UTC](https://discuss.elastic.co/t/topic/153466/17 "2018-10-24T14:37:32Z")

</div>

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

---

<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:** [November 21, 2018, 2:37pm UTC](https://discuss.elastic.co/t/topic/153466/18 "2018-11-21T14:37:36Z")

</div>

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