手里有两种操作系统的 Linux 设备,一种是 CentOS 8 (内核 4.19.x ),一种是公司魔改过的某发行版(内核 4.18.x 到 4.19.x 都有)。近日偶尔发现一个问题,就是对于net.ipv4.tcp_syn_retries这个参数,在 CentOS 8 上的生效值比配置值少 2 。
比如:
而在魔改过的发行版上,这个配置的行为就是正常的。虽然我们自己也改过 CentOS 8 设备使用的内核源码,但是我看了一下,可以确认没有改到过这块逻辑,对比了一下上游的正式版内核代码,也没有发现哪里有问题。当前求助搜索引擎和 chatgpt 均未果。。 想问下有没有大佬也遇到过这样的问题?如果有的话,是否知道原因是什么?
1
PTLin 220 天前
我看了下 4.19 的重传定时器 tcp_retransmit_timer ,没看到什么问题,倒不如说这段代码即使到 6.6 版本 syn 重传的变化也不大。
请问你是通过什么方式观测 syn 发送的?并且确定没有 syncnt 对 sock 设置独立的 syn 超时次数吧? |
2
lysShub 220 天前
这个重试间隔时间是递增的吧,实际使用真会等那么旧吗?
|
4
AdmiralDollBug OP |
5
PTLin 220 天前
@AdmiralDollBug 你具体内核是 4.19.几
|
6
AdmiralDollBug OP @PTLin 4.19.181
|
7
PTLin 220 天前
@AdmiralDollBug 问一下,你机器上没打开 fastopen 吧
|
8
AdmiralDollBug OP @PTLin 感觉应该不是这个影响的,在两种设备上它们的配置相同:
``` [***@*** ~]# sysctl -a | grep fastopen net.ipv4.tcp_fastopen = 1 ``` |