SystemdDoctor
мешает работе сеть нагрузка ядро

kernel: TCP: request_sock … overflow

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

Вероятные причины

По порядку: сверху то, что встречается чаще.

  1. Системный предел очереди мал

    Настройка ядра ограничивает очередь независимо от того, что просит служба. Служба не может превысить этот предел.

  2. Служба просит малую очередь

    Даже при высоком системном пределе служба может запросить короткую очередь в своих настройках.

  3. Служба не успевает принимать соединения

    Очередь переполняется не из-за размера, а из-за того, что обработчики заняты. Увеличение очереди лишь отсрочит потери.

Диагностика

Команды идут в том порядке, в котором их стоит выполнять: каждая следующая проверяет то, что осталось после предыдущей.

Системные пределы очередей.

sysctl net.core.somaxconn net.ipv4.tcp_max_syn_backlog

Сколько соединений ожидает подтверждения.

ss -tan state syn-recv | wc -l

Сообщения ядра о переполнении.

journalctl -k -b --no-pager | grep -iE "request_sock|SYN flood" | tail

Решение

Решение своё для каждой причины. Сначала определите, какая из них ваша, — иначе правки наложатся друг на друга.

1. Системный предел очереди мал
Почему происходит
Настройка ядра ограничивает очередь независимо от того, что просит служба. Служба не может превысить этот предел.
Как проверить
Посмотрите предел и переполнения.
sysctl net.core.somaxconn
netstat -s 2>/dev/null | grep -i "listen queue" || ss -s | head
Как исправить
Поднимите предел через файл настроек ядра и перезапустите службу: очередь задаётся при открытии сокета.
echo "net.core.somaxconn = 4096" | sudo tee /etc/sysctl.d/99-net.conf && sudo sysctl --system
2. Служба просит малую очередь
Почему происходит
Даже при высоком системном пределе служба может запросить короткую очередь в своих настройках.
Как проверить
Посмотрите настройку службы.
sudo nginx -T 2>/dev/null | grep -i backlog
systemctl show myapp.socket -p Backlog 2>/dev/null
Как исправить
Увеличьте очередь в настройках службы. Для сокет-активации это параметр Backlog= в описании сокета.
3. Служба не успевает принимать соединения
Почему происходит
Очередь переполняется не из-за размера, а из-за того, что обработчики заняты. Увеличение очереди лишь отсрочит потери.
Как проверить
Посмотрите состояния соединений и загрузку службы.
ss -tan state syn-recv | wc -l
systemctl status myapp.service --no-pager | grep -i tasks
Как исправить
Разбирайтесь с производительностью: добавьте обработчиков или ускорьте обработку запроса.

Пример вывода

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

kernel: TCP: request_sock_TCP: Possible SYN flooding on port 443. Sending cookies.  Check SNMP counters.
nginx[1120]: [error] accept4() failed (11: Resource temporarily unavailable)

Связанные ошибки

Где встречается чаще всего

Источники

  • Документация ядра: настройки сети документация программы
    сверено 15 сентября 2026
  • Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
    Воспроизведено нагрузкой при somaxconn=128.
    собственная проверка, systemd 255
    сверено 15 сентября 2026