Частые переезды таблеток между узлами
YDB автоматически распределяет нагрузку, перемещая таблетки с перегруженных узлов на другие узлы. Этот процесс управляется компонентом Hive. Когда Hive перемещает таблетки, запросы, затрагивающие эти таблетки, могут выполняться дольше из-за ожидания инициализации таблетки на новом узле.
Для балансировки нагрузки между узлами YDB учитывает использование следующих аппаратных ресурсов:
- процессор;
- оперативная память;
- сетевой трафик;
- Counter.
Балансировка выполняется автоматически в следующих случаях:
-
Дисбаланс потребления аппаратных ресурсов
Для оценки сбалансированности потребления аппаратных ресурсов YDB использует метрику Scatter. Подробнее о логике расчёта метрики Scatter и условиях запуска балансировки см. в разделе {#T}.
-
Перегруженность узла
Hive инициирует балансировку при сильной асимметрии загрузки (например, > 90% на одном узле и < 70% на другом). Подробнее см. {#T}.
-
Неравномерное распределение таблеток одного объекта
Для таблеток, у которых отсутствует явное потребление ресурсов, Hive использует фиктивный ресурс Counter для контроля равномерности распределения. При нарушении равномерности запускается балансировка. Подробнее см. {#T}.
Диагностика
-
Посмотрите, отображаются ли всплески на графике Tablets moved by Hive на панели мониторинга Grafana DB status.

На этой диаграмме отображаются данные о количестве таблеток, перемещаемых между узлами YDB в секунду.
-
Проанализируйте статистику балансировщика Hive.
-
Откройте Встроенный UI.
-
Нажмите на ссылку Developer UI в правом верхнем углу Встроенного UI.
-
В Developer UI перейдите на страницу Tablets > Hive > App.
Проанализируйте статистику балансировщика в правом верхнем углу.

-
Кроме того, чтобы просмотреть недавно перемещённые таблетки, нажмите на кнопку Balancer.
Откроется окно Balancer, в котором список недавно перемещённых таблеток отображается в секции Latest tablet moves.
-
Рекомендации
Измените настройки балансировщика Hive:
-
Откройте Встроенный UI.
-
Нажмите на ссылку Developer UI в правом верхнем углу Встроенного UI.
-
В Developer UI перейдите на страницу Tablets > Hive > App.

-
Нажмите на Settings.
-
Чтобы снизить вероятность слишком частой балансировки, увеличьте следующие пороговые значения балансировщика Hive:
Параметр
Описание
Значение по умолчанию
MinCounterScatterToBalance
Пороговое значение для значения разброса ресурса counter. При достижении этого значения Hive начинает балансировать нагрузку
0.02
MinCPUScatterToBalance
Пороговое значение для значения разброса ресурса процессора. При достижении этого значения Hive начинает балансировать нагрузку
0.5
MinMemoryScatterToBalance
Пороговое значение для значения разброса ресурса оперативной памяти. При достижении этого значения Hive начинает балансировать нагрузку
0.5
MinNetworkScatterToBalance
Пороговое значение для значения разброса ресурса сетевого трафика. При достижении этого значения Hive начинает балансировать нагрузку
0.5
MaxNodeUsageToKick
Пороговое значение использования ресурсов узла YDB. При достижении этого значения Hive начинает срочную балансировку
0.9
ObjectImbalanceToBalance
Пороговое значение метрики дисбаланса объекта базы данных
0.02
Примечание
В этих параметрах используются относительные значения, где 1.0 соответствует 100% и фактически отключает балансировку. Если общее значение аппаратных ресурсов может превышать 100%, скорректируйте значение настройки соответствующим образом.
Counter - это фиктивный ресурс, который представляет собой количество таблеток одного типа, запущенных на узле, который может быть использован для равномерного распределения таблеток между узлами.