На пиковой нагрузке часть клиентов вдруг начинает получать обрывы соединения или зависшие запросы — при этом CPU не упирается в потолок, память в порядке, в логе приложения ничего похожего на ошибку нет. Причина часто лежит не в приложении, а на уровне ядра, в очереди, о существовании которой вспоминают только в такой момент: у любого слушающего сокета есть ограниченный backlog, и когда он переполняется, ядро либо тихо роняет пакет, либо рвёт соединение сбросом — а приложение об этом даже не узнаёт.
Подробнее →