Linux系统TCP参数主要通过/proc/sys/net/ipv4/目录下虚拟文件运行时配置,控制连接建立、拥塞控制、缓冲区管理等行为;所有参数均可通过sysctl命令临时修改或写入/etc/sysctl.conf持久化,其中tcp_tw_recycle自内核4.12起已被移除,NAT环境下必须设为0。

/proc/sys/net/ipv4/ 是核心路径,所有 TCP 相关可调参数均位于此目录下。例如:
tcp_fin_timeout:FIN_WAIT2 状态下 socket 的超时时间(秒),默认 60。短连接服务可设为 30,减少 TIME-WAIT 占用。
tcp_max_syn_backlog:半连接队列(SYN_RCVD 状态)最大长度,默认 2048。高并发服务建议设为 4096 或更高,避免 SYN 包被丢弃。
tcp_tw_reuse:启用后允许将处于 TIME-WAIT 状态的 socket 重用于新连接(需满足时间戳和四元组唯一性),设为 1 可缓解端口耗尽问题。
tcp_tw_recycle:已废弃(自 Linux 4.12 起移除),不建议启用;在 NAT 环境下易导致连接异常,应始终设为 0。
tcp_keepalive_time / tcp_keepalive_intvl / tcp_keepalive_probes:三者协同控制保活机制。例如设为 1800 / 15 / 5,表示空闲 30 分钟后开始探测,每 15 秒发一次,连续 5 次无响应则断开连接。
tcp_rmem 和 tcp_wmem:分别定义接收/发送缓冲区的最小、默认、最大值(单位字节),格式如 "4096 131072 8388608"。最大值需 ≤ net.core.rmem_max 和 net.core.wmem_max,否则会被截断。
tcp_congestion_control:当前生效的拥塞控制算法,常见值有 cubic(默认)、reno、bbr。可通过 echo bbr > /proc/sys/net/ipv4/tcp_congestion_control 切换(需内核支持)。
tcp_syn_retries:客户端发起连接时 SYN 重传次数,默认 6(对应约 127 秒),高可靠性场景可保留,低延迟或弱网环境可降至 3。
tcp_abort_on_overflow:全连接队列满时是否发送 RST。设为 1 可让客户端快速失败,避免无限等待;设为 0 则静默丢包,应用层感知延迟更高。
tcp_timestamps:启用时间戳选项(默认 1),对 RTT 测量和防止序列号回绕至关重要;关闭(设为 0)可能影响 BBR 等现代算法表现,除非有明确兼容性需求,否则不建议关闭。
tcp_sack:启用选择性确认(默认 1),提升丢包恢复效率,尤其在高丢包率链路上效果明显,不应关闭。
所有参数也可通过 sysctl 命令统一管理,例如:sysctl -w net.ipv4.tcp_fin_timeout=30
持久化配置需写入 /etc/sysctl.conf 或 /etc/sysctl.d/*.conf,再执行 sysctl -p 加载。


















