---
metadata:
  - name: generator
    content: Diplodoc Platform v5.52.0
alternate:
  - https://ydb.tech/docs/en/troubleshooting/performance/system/system-clock-drift.md?version=v25.3
  - https://ydb.tech/docs/ru/troubleshooting/performance/system/system-clock-drift.md?version=v25.3
  - href: ru/troubleshooting/performance/system/system-clock-drift.md
    type: text/markdown
    title: Markdown version
  - href: ../../../llms.txt
    type: text/markdown
    title: llms.txt
sourcePath: ru/core/troubleshooting/performance/system/system-clock-drift.md
---
> **Documentation Index:** Fetch the complete configuration index at https://ydb.tech/docs/ru/llms.txt

# Расхождение системного времени между серверами

Синхронизированное время на серверах баз данных имеет важное значение для распределённых баз данных. Если системные часы на серверах YDB будут сильно расходиться, это приведёт к увеличению задержек в распределённых транзакциях.

{% note alert %}

Важно поддерживать системное время на серверах YDB в синхронном состоянии, чтобы избегать больших задержек.

{% endnote %}

Если системное время узлов, на которых запущены [таблетки-координаторы](https://ydb.tech/docs/ru/concepts/glossary.md?version=v25.3#coordinator), отличается друг от друга, задержки транзакций увеличиваются на величину разницы во времени между самыми быстрыми и самыми отстающими системными часами. Это происходит потому, что транзакция, запланированная на узле с более быстрыми системными часами, может быть выполнена только после того, как координатор с самыми отстающими часами достигнет того же времени.

Более того, если отклонение во времени превысит 30 секунд, система YDB откажется обрабатывать распределённые транзакции. Перед тем как координаторы приступят к планированию транзакции, задействованные [data shards](https://ydb.tech/docs/ru/concepts/glossary.md?version=v25.3#data-shard) определяют допустимый диапазон временных меток (timestamps) для транзакции. Начало этого диапазона — текущее системное время таблетки-медиатора, а конец определяет тайм-аут планирования в 30 секунд. Если системное время координатора выходит за пределы этого временного диапазона, он не может запланировать распределённую транзакцию, что приводит к ошибкам в таких запросах.

## Диагностика

Чтобы диагностировать расхождение в системном времени серверов YDB, используйте следующие методы:

1. Используйте **Healthcheck** во [Встроенном UI](https://ydb.tech/docs/ru/reference/embedded-ui/index.md?version=v25.3):

    1. Во [Встроенном UI](https://ydb.tech/docs/ru/reference/embedded-ui/index.md?version=v25.3) перейдите на вкладку **Databases** и нажмите на наименование базы данных.

    1. На вкладке **Navigation** убедитесь, что требуемая база данных выбрана.

    1. Откройте вкладку **Diagnostics**.

    1. На вкладке **Info** нажмите на кнопку **Healthcheck**.

        Если кнопка **Healthcheck** отображает статус `MAINTENANCE REQUIRED`, возможно, в кластере YDB возникли проблемы, например, расхождение системных часов. Все выявленные неполадки будут перечислены в разделе **DATABASE** под кнопкой **Healthcheck**.

    1. Чтобы увидеть диагностированные неполадки, раскройте раздел **DATABASE**.

        ![](_assets/healthcheck-clock-drift.png)

        Проблемы с расхождением системного времени отображаются в разделе `NODES_TIME_DIFFERENCE`.

    {% note info %}

    Для получения дополнительной информации см. [Health Check API](https://ydb.tech/docs/ru/reference/ydb-sdk/health-check-api.md?version=v25.3)

    {% endnote %}


1. Откройте страницу [Interconnect overview](https://ydb.tech/docs/ru/reference/embedded-ui/interconnect-overview.md?version=v25.3) во [Встроенном UI](https://ydb.tech/docs/ru/reference/embedded-ui/index.md?version=v25.3).

1. Используйте такие инструменты, как `pssh` или `ansible`, чтобы выполнить команду (например, `date +%s%N`) на всех узлах YDB и отобразить значение системных часов.

    {% note warning %}

    На результаты будут влиять сетевые задержки между хостом, на котором запущены `pssh` или `ansible`, и хостами YDB.

    {% endnote %}

    Если вы используете утилиты синхронизации времени, вы также можете запросить их статус вместо запроса текущих временных меток. Например, `timedatectl show-timesync --all`.

## Рекомендации

1. Вручную синхронизируйте системные часы серверов, на которых работают узлы YDB. Например, используйте `pssh` или `ansible`, чтобы выполнить команду синхронизации часов на всех узлах.

2. Убедитесь, что системные часы на всех серверах YDB регулярно синхронизируются с помощью `timesyncd`, `ntpd`, `chrony` или аналогичного инструмента. Рекомендуется использовать один и тот же источник времени для всех серверов в кластере YDB.
