Расхождение часов между серверами Clock skew between servers
ID причины in-clock-skew · Основной ответственный Команда инфраструктуры · Серверная инфраструктура · Совместно Команда разработки · Разработка сервера
Если часы на серверах немного расходятся, проверки кулдаунов, баффов и начала событий на разных серверах дают разный результат.
Почему На сервере с остановившейся синхронизацией времени часы расходятся с другими серверами на сотни ms или несколько секунд → Следствие Если передавать между серверами абсолютное время (например, момент окончания баффа), проверки расходятся → На экране После перехода пропадает бафф или кулдаун начинается заново
Основной ответственный Команда инфраструктуры · Серверная инфраструктура · Совместно Команда разработки · Разработка сервера
Команда разработки: задачи
Передавать между серверами оставшееся время вместо абсолютного.
Команда инфраструктуры: задачи
Следить за синхронизацией времени (NTP, chrony), настроить алерт на расхождение часов между серверами.
Цифры для ориентира
При нормальной синхронизации времени (NTP, chrony) серверы одного ЦОД обычно расходятся не больше чем на единицы ms. Если синхронизация остановилась или виртуальный сервер долго стоял и потом возобновил работу, расхождение доходит до сотен ms и нескольких секунд.
На графике
Плавный рост · смещение часов по серверам
Где смотреть
Собрать с каждого сервера значения System time (разница между системными часами и временем NTP), Last offset и Ref time (момент, когда последний раз учтено измерение источника времени) из chronyc tracking и сравнить
Подтверждает
Смещение проблемного сервера отличается от остальных на сотни ms и больше или Ref time давно не обновлялось, и расхождения проверок бывают только при переходах на этот сервер и с него
Опровергает
Если смещение на всех серверах в пределах единиц ms, причина в расчёте времени в игре или в ошибке синхронизации часов на клиенте
Чем проверить
Инструменты инфраструктуры (игровой код не нужен)
Подробнее
Разовый скачок часов одного сервера вперёд или назад разобран в слое ОС сервера, в причине «Скачок системных часов (шаговая коррекция NTP)».
chrony – Frequently Asked Questionschrony Дрейф часов обычного компьютера меньше 100 ppm, у виртуальных машин может быть больше. После паузы и возобновления у виртуальной машины время сбивается, и может понадобиться шаговая коррекция
clock_gettime(2) — Linux manual pageLinux man-pages CLOCK_REALTIME может скачкообразно меняться при ручной установке и коррекции NTP, а CLOCK_MONOTONIC такие скачки не затрагивают
chronyc(1)chrony System time (разница между временем NTP и системными часами), Last offset (смещение, оценённое при последней коррекции), Ref time (момент, когда учтено последнее измерение источника времени) из chronyc tracking
Смотрите также
Тот же слой: L13 Архитектура и эксплуатация серверов