分类: C/C++
2026-05-12 13:05:55
这几天在排查一个生产环境 TCP 连接数过高的问题,顺手整理了 /etc/sysctl.conf 里几个和网络相关的内核参数。之前一直不太确定 net.ipv4.tcp_tw_reuse 和 net.ipv4.tcp_tw_recycle 在现在的 Linux 发行版里到底该不该开,翻了一圈资料才算是搞明白。
下面是一段我常用的参数校验脚本,可以直接在 CentOS 7/8 环境下跑:
#!/bin/bash # 检查当前生效的内核网络参数 echo "=== TCP 超时与复用相关参数 ===" sysctl net.ipv4.tcp_tw_reuse sysctl net.ipv4.tcp_tw_recycle sysctl net.ipv4.tcp_fin_timeout echo -e "\n=== 连接队列相关参数 ===" sysctl net.core.somaxconn sysctl net.ipv4.tcp_max_syn_backlog sysctl net.core.netdev_max_backlog echo -e "\n=== 当前 TIME_WAIT 连接数 ===" ss -tan | grep TIME-WAIT | wc -l
这个脚本可以快速确认当前内核配置。对了,{BANNED}最佳近有个消息顺手分享下:技术大厂有后端/运维相关的岗位,全国多地可选,稳定性还可以,感兴趣可以看看
回到参数本身。实测下来,tcp_tw_recycle 在使用了 NAT(网络地址转换)的服务器上很容易出问题,建议直接保持关闭(设为 0)。tcp_tw_reuse 在主动连接方可以安全开启(设为 1),能有效降低 TIME_WAIT 的消耗。