Если сервер читает данные данжа или карты с диска в момент первого запроса, на этот тик останавливаются все.
Почему Кто-то впервые входит в данж или локацию → Следствие Сервер читает данные с диска в игровом потоке → На экране У всех на этом сервере короткий фриз
Основной ответственный Команда разработки · Разработка сервера · Совместно Команда инфраструктуры · Серверная инфраструктура
Команда разработки: задачи
Загружать данные заранее при старте сервера, загружать асинхронно.
Команда инфраструктуры: задачи
Сервер, только что созданный из снапшота, перед вводом в работу прогревать (один раз прочитать все блоки диска) или использовать быстрое восстановление из снапшота.
На графике
Случайные всплески · время тика сервера, чтение с диска
Где смотреть
Сопоставить моменты остановок с записями о первом входе в данж или локацию в логе игрового сервера и смотреть в эти моменты чтение с диска игровым сервером (kB_rd/s в pidstat -d) и долгие вызовы read и open через perf trace --duration. Если облачный сервер только что поднят, сравнить VolumeAvgReadLatency в EBS со старыми серверами
Подтверждает
Остановка только в момент первого входа, при повторном входе туда же остановки нет. Во время остановки игровой поток ждёт чтения файла
Опровергает
Если такие же остановки бывают и в уже загруженных локациях, причина другая: превышение бюджета тика, GC
Чем проверить
Нужны логи и метрики игрового сервера или клиента
Подробнее
В облаке сервер, только что созданный из снапшота (копии диска), при первом чтении каждого блока забирает его из удалённого хранилища и работает гораздо медленнее обычного. Если первый вход особенно долгий только на серверах, которые только что поднялись при автомасштабировании, стоит заподозрить эту причину.
Источники
Initialize Amazon EBS volumesAWS Том, созданный из снапшота, пока подтягивает блоки из S3, работает с повышенной задержкой и пониженной производительностью. Его заранее инициализируют, прочитав все блоки через dd или fio
Amazon EBS fast snapshot restoreAWS Быстрое восстановление из снапшота сразу выдаёт инициализированный том, и задержки при первом обращении нет