ID причины rt-policer · Основной ответственный Команда инфраструктуры · Сетевая инфраструктура · Совместно Команда инфраструктуры · Серверная инфраструктура, Команда разработки · Разработка сервера
Тарифы провайдеров, лимиты облачных инстансов и оборудование защиты от DDoS могут сразу отбрасывать пакеты сверх заданной скорости, не ставя их в очередь.
Почему Мгновенный объём передачи превышает разрешённую скорость или разрешённый всплеск (burst) → Следствие Пакеты сверх лимита отбрасываются сразу, без очереди (полисинг) → На экране В моменты больших всплесков пропадает сразу несколько пакетов: фриз, потом перемотка. Средняя скорость при этом ниже лимита
Весь сервер, Один регион или провайдер, Только у меня
Когда
При наплыве игроков, Вечерний пик
Ответственные
Основной ответственный Команда инфраструктуры · Сетевая инфраструктура · Совместно Команда инфраструктуры · Серверная инфраструктура, Команда разработки · Разработка сервера
Команда разработки: задачи
Распределять объём, который выплёскивается каждый тик, по всему тику, чтобы мгновенный объём передачи был ниже разрешённого всплеска, при упоре в лимит пакетов в секунду объединять сообщения одного тика в один пакет.
Команда инфраструктуры: задачи
Сеть: проверить счётчики превышения полисера на оборудовании, заменить полисер шейпером, увеличить разрешённый всплеск. Серверы и ОС: проверить метрики превышения облачных лимитов (в AWS bw_out_allowance_exceeded и pps_allowance_exceeded в ethtool -S), перейти на инстанс помощнее, включить пейсинг на сервере (очередь fq в Linux).
Цифры для ориентира
Шейпер (ставит пакеты в очередь и задерживает) увеличивает задержку, полисер (сразу отбрасывает) увеличивает потери. Игровое TCP-соединение от одной потери может встать на сотни ms, поэтому при кратком превышении лимита обычно сильнее влияет полисер.
На графике
Упор в лимит (плато) · объём отправки с коротким интервалом, счётчики превышения полисера и allowance
Где смотреть
Посмотреть счётчики превышения (exceed) и отбрасываний на оборудовании с полисером, в облаке bw_out_allowance_exceeded и pps_allowance_exceeded в ethtool -S. Для соединений с потерями посмотреть RTT непосредственно перед потерей по rtt в ss -ti или по захвату пакетов
Подтверждает
Счётчики превышения растут, а объём отправки на коротком интервале плоский, будто срезан на каком-то значении. Перед потерями RTT не растёт, и несколько пакетов пропадают разом только в моменты больших всплесков
Опровергает
Если перед потерями сначала растёт RTT, это переполнение очереди («Переполнение очереди в узком месте (потери от перегрузки)», «Переполнение неглубоких буферов всплесками отправки»). Если счётчики превышения не меняются, причина другая
An Internet-Wide Analysis of Traffic PolicingGoogle У передач под полисингом доля потерь в среднем в 6 раз выше, и той же цели можно добиться пейсингом или шейпингом. Различие: полисинг отбрасывает избыток без роста RTT, а при переполнении очереди RTT растёт ещё до потерь (SIGCOMM 2016)