Если запросы поступают быстрее, чем обрабатываются, и копятся в очереди, запросы в её хвосте обрабатываются лишь через несколько секунд или выбрасываются.
Почему Запросы приходят быстрее, чем обрабатываются → Следствие Очередь растёт, а при превышении лимита запросы выбрасываются → На экране Умения и обмены срабатывают с опозданием или «съедаются»
Основной ответственный Команда разработки · Разработка сервера
Команда разработки: задачи
Мониторить длину очереди, ввести политику, при которой в первую очередь выбрасываются устаревшие запросы, распараллелить обработку.
На графике
Упор в лимит (плато) · длина очереди и возраст самого старого сообщения, число обработанных в секунду
Где смотреть
Смотреть метрики сервера по каждой очереди: длину, возраст самого старого сообщения, число поступивших, обработанных и выброшенных в секунду. Если метрик в коде нет, смотреть через ss (или netstat) Recv-Q игрового сокета (объём, который ядро уже приняло, а процесс ещё не прочитал)
Подтверждает
Пока поступает больше, чем обрабатывается, число обработанных упирается в одно значение и дальше не растёт, а длина и возраст очереди и число выброшенных постоянно растут
Опровергает
Если очередь короткая и сообщения в ней свежие, а отклик всё равно запаздывает, дело в задержке на линии или в запаздывании самих тиков
Avoiding insurmountable queue backlogsAWS Amazon Builders' Library. Затор отслеживают по возрасту ожидающих сообщений. Системы реального времени обрабатывают сначала свежие данные (ближе к LIFO), а устаревшие сообщения могут выбрасывать
ss(8) — Linux manual pageiproute2 Утилита для просмотра статистики сокетов (сведения похожи на netstat). -p показывает процесс, который использует сокет
netstat(8) — Linux manual pagenet-tools Recv-Q: число байтов в подключённом сокете, которые программа пользователя ещё не забрала