текущие настройки sysctl:
Код: Выделить всё
net.ipv4.tcp_retries2 = 5
net.ipv4.tcp_syn_retries = 3
net.ipv4.tcp_synack_retries = 3
пример из 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, не помогло
почему ядро игнорирует tcp_retries2? есть ли что-то еще, что переопределяет это? соединение просто постоянно повторяет передачу, а не истекает время ожидания. клиент определенно не отвечает (проблема с сетью на его стороне).
действительно нужно, чтобы тайм-аут был быстрее, чтобы мы могли очистить ресурсы... есть идеи, что может вызвать это??
Подробнее здесь: https://stackoverflow.com/questions/798 ... kernel-bug
Мобильная версия