Spec-Zone.ru › Elasticsearch 7
›Elasticsearch Руководство [7.17] ›Настройка Elasticsearch ›Важная системная настройка

Тайм-аут повторной передачи TCP

Каждая пара узлов Elasticsearch общается с помощью ряда TCP-соединений, которые остаются открытыми до тех пор, пока один из узлов не будет выключен или общение между узлами не будет прервано сбоем в базовой инфраструктуре.

TCP обеспечивает надёжное общение по иногда ненадежным сетям, скрывая временные сбои в сети от обменивающихся приложениями. Ваша операционная система будет повторно передавать любые утерянные сообщения несколько раз, прежде чем уведомить отправителя о проблеме. Elasticsearch должен ожидать во время повторных передач и может реагировать только после того, как операционная система решит отказаться. Пользователи, следовательно, также должны дождаться завершения серии повторных передач.

Большинство дистрибутивов Linux по умолчанию повторно передают любые утерянные пакеты 15 раз. Повторные передачи происходят экспоненциально, поэтому эти 15 повторных передач занимают более 900 секунд. Это означает, что Linux может потратить много минут на обнаружение разрыва сети или отказавшего узла с помощью этого метода. Windows по умолчанию выполняет всего 5 повторных передач, что соответствует тайм-ауту около 13 секунд.

Значение по умолчанию Linux позволяет общение по сетям, которые могут испытывать очень длительные периоды потерь пакетов, но это значение слишком велико и даже вредно в высококачественных сетях, используемых большинством установок Elasticsearch. Когда кластер обнаруживает отказ узла, он реагирует, перераспределяя потерянные фрагменты, перенаправляя запросы и, возможно, избирая новый мастер-узел. Высокодоступные кластеры должны уметь быстро обнаруживать отказы узлов, что можно достичь, уменьшив разрешённое количество повторных передач. Соединения с удалёнными кластерами также должны предпочесть обнаруживать сбои гораздо быстрее, чем позволяет значение по умолчанию Linux. Пользователи Linux должны, следовательно, уменьшить максимальное число повторных передач TCP.

Вы можете уменьшить максимальное количество повторных передач TCP до 5, выполнив следующую команду в качестве root. Пять повторных передач соответствуют тайм-ауту около 13 секунд.

sysctl -w net.ipv4.tcp_retries2=5

Чтобы установить это значение постоянно, обновите настройку net.ipv4.tcp_retries2 в /etc/sysctl.conf. Для проверки после перезагрузки выполните sysctl net.ipv4.tcp_retries2.

Это значение применяется ко всем TCP-соединениям и повлияет на надёжность связи с системами, помимо кластеров Elasticsearch. Если ваши кластеры обмениваются данными с внешними системами по сети низкого качества, вам может потребоваться выбрать более высокое значение для net.ipv4.tcp_retries2. По этой причине Elasticsearch не настраивает это значение автоматически.

Связанная настройка

Elasticsearch также реализует собственные внутренние проверки состояния с тайм-аутами, которые намного короче, чем тайм-аут повторной передачи по умолчанию в Linux. Поскольку это проверки состояния на уровне приложения, их тайм-ауты должны учитывать эффекты на уровне приложения, такие как паузы в работе сборщика мусора. Вы не должны уменьшать тайм-ауты, связанные с этими проверками состояния на уровне приложения.

Вы также должны убедиться, что ваша сетевая инфраструктура не мешает долгоживущим соединениям между узлами, даже если эти соединения кажутся неактивными. Устройства, которые прерывают соединения, когда они достигают определённого возраста, являются распространённой причиной проблем для кластеров Elasticsearch и не должны использоваться.

© 2023-2025 Elasticsearch
As of September 2024, Elasticsearch is available under a choice of three licenses: the Server Side Public License (SSPL), the Elastic License, or the AGPLv3 (OSI approved).
Elasticsearch and the Elasticsearch logo are trademarks of Elasticsearch B.V., registered in the U.S. and in other countries.
https://www.elastic.co/guide/en/elasticsearch/reference/7.17/system-config-tcpretries.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API