Linux网络调优新手教程:快速提升服务器网络性能
调优前先看这几点
很多刚接触服务器运维的朋友,遇到网站慢、延迟高等问题,第一反应就是升级带宽或硬件。
其实合理调整Linux内核的网络参数,往往能花更少的钱获得明显改善。
本文围绕 Linux网络调优展开,所有操作基于CentOS 7/8和Ubuntu 20.04+测试通过,你需要有root权限或sudo权限,以及SSH登录能力。
建议先备份 /etc/sysctl.conf 文件,方便回退。
核心参数这样改
登录服务器后,先用 sysctl -a | grep net 查看当前网络相关参数。
我们主要调整TCP连接处理能力。
打开 /etc/sysctl.conf 文件,在末尾添加以下内容:
# TCP连接优化
net.core.somaxconn = 1024 # 最大监听队列
net.ipv4.tcp_max_syn_backlog = 2048 # SYN队列长度
net.ipv4.tcp_fin_timeout = 15 # FIN_WAIT2超时
net.ipv4.tcp_tw_reuse = 1 # 允许TIME_WAIT复用
net.ipv4.tcp_tw_recycle = 0 # 建议关闭,NAT环境慎用
对于高并发场景,还可以增加文件句柄和端口范围:
net.ipv4.ip_local_port_range = 1024 65535
fs.file-max = 1000000
保存后执行 sysctl -p 使参数生效。注意:tcp_tw_recycle 在Nat环境下容易导致连接异常,建议保持为0。
常见的坑和解决办法
坑1:修改后网络中断。
如果 sysctl -p 报错或网络断开,检查参数值是否合法,尤其是 net.core.rmem_max 等数值不能超过系统上限。
建议逐条添加,不要一次性批量修改。
坑2:参数没生效。
用 sysctl net.ipv4.tcp_fin_timeout 确认当前值,如果还是原来的数字,可能是文件权限问题或忘记执行 -p。
另外某些参数需要重启网络服务,执行 systemctl restart network(CentOS)或 netplan apply(Ubuntu)。
坑3:TIME_WAIT仍然很多。
即使开启 tcp_tw_reuse,某些场景下TIME_WAIT依然存在,可以配合调整 net.ipv4.tcp_max_tw_buckets 来限制数量,但不建议设得太低,避免丢弃正常连接。
如何验证效果
跑一个简单的压力测试:在本机或同网络环境下的另一台机器上执行 ab -n 10000 -c 100 http://你的服务器IP/(需安装apache-utils)。
观察 Requests per second 和 Time per request 变化。
更专业的验证可以使用 iperf3 测试最大吞吐量:服务端运行 iperf3 -s,客户端运行 iperf3 -c 服务器IP,对比调优前和调优后的带宽数值。
也可以直接用 ss -s 查看连接状态统计,如果TIME_WAIT明显减少,说明调优有效。
最终建议
Linux网络调优不是一劳永逸的,不同应用场景(Web、数据库、文件传输)需要不同的参数组合。建议每次只改2-3个参数,记录改动前后的性能数据,再决定是否继续调整。
如果你按照本文完成了基础调优,但问题依然存在,可以继续深入调整TCP拥塞控制算法(如BBR)或网卡多队列绑定。
希望这篇教程能帮你迈出服务器调优的第一步。