Tcp_retries2 установлен на 5, но соединение зависает дольше, чем ожидалось?? ошибка ядра или я что-то упустилLinux

Ответить
Anonymous
 Tcp_retries2 установлен на 5, но соединение зависает дольше, чем ожидалось?? ошибка ядра или я что-то упустил

Сообщение Anonymous »

Столкнулся со странной проблемой с TCP-соединениями на нашем рабочем сервере (centos 7, ядро ​​5.15.0). соединения некоторых клиентов просто зависают навсегда, даже если мы установили tcp_retries2 для уменьшения времени ожидания.
текущие настройки sysctl:

Код: Выделить всё

net.ipv4.tcp_retries2 = 5
net.ipv4.tcp_syn_retries = 3
net.ipv4.tcp_synack_retries = 3
согласно документам tcp_retries2=5 должен истекать по истечении максимум 25-50 секунд, но иногда мы видим, что соединения зависают на 10+ минут. проверил с помощью tcpdump и увидел, что повторные передачи продолжают превышать ожидаемые значения.
пример из tcpdump (ip изменен):

Код: Выделить всё

14:23:15.234567 IP server.8080 > client.45678: Flags [P.], seq 1:1449, ack 1, win 229, length 1448
14:23:15.734821 IP server.8080 > client.45678: Flags [P.], seq 1:1449, ack 1, win 229, length 1448
14:23:16.735012 IP server.8080 > client.45678: Flags [P.], seq 1:1449, ack 1, win 229, length 1448
14:23:18.735234 IP server.8080 > client.45678: Flags [P.], seq 1:1449, ack 1, win 229, length 1448
... (keeps going)
пробовал:
  • проверил настройки с помощью sysctl -a | grep tcp_retries
  • проверил, есть ли переопределения для каждого сокета с помощью ss -i (ничего особенного)
  • отслеживается с помощью netstat, соединения остаются в состоянии ESTABLISHED
  • также пробовал tcp_orphan_retries, не помогло
наше приложение представляет собой собственный C-сервер, использующий эполл. мы выполняем обычный поток Socket()bind() Listen() Accept(), в параметрах сокета нет ничего особенного, кроме SO_REUSEADDR.
почему ядро ​​игнорирует tcp_retries2? есть ли что-то еще, что переопределяет это? соединение просто постоянно повторяет передачу, а не истекает время ожидания. клиент определенно не отвечает (проблема с сетью на его стороне).
действительно нужно, чтобы тайм-аут был быстрее, чтобы мы могли очистить ресурсы... есть идеи, что может вызвать это??

Подробнее здесь: https://stackoverflow.com/questions/798 ... kernel-bug
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Linux»