Linux服务器网卡性能调优教程

为什么要关心Linux网卡性能调优

网卡性能直接影响服务器的响应速度和并发能力。
很多新手以为只要硬件够好,网络就一定快,但实际上操作系统默认的网卡参数偏向保守,不做调优的话,万兆网卡可能只跑出千兆的水平。
本文就从零开始,手把手教你完成Linux服务器网卡性能调优,每一步都带命令和结果验证,你只需在SSH终端里照着敲就行。

第一步:摸清你网卡的“底细”

操作前必须先知道当前网卡型号、驱动、支持的功能和当前速率。
使用下面两条命令:

# 查看所有网卡及IP信息
ip addr show
# 查看网卡详细参数(以eth0为例,换成你自己的网卡名)
ethtool eth0

重点关注 SpeedDuplexAuto-negotiation 这几项。
如果 Speed 不是预期值(比如明明是万兆卡却显示1000Mb/s),先检查网线、交换机端口或协商模式。务必先确保物理链路正常,再谈调优。

第二步:用ethtool做基础调优

关闭网卡节能和减少中断延迟能明显提升小包处理性能。
执行以下命令(临时生效,重启后失效):

# 关闭TCP校验和卸载(部分虚拟机环境可能不支持)
ethtool -K eth0 tx off rx off
# 关闭通用接收卸载(GRO)和通用分段卸载(GSO)
ethtool -K eth0 gro off gso off
# 调整环形缓冲区大小(先看当前值:ethtool -g eth0)
ethtool -G eth0 rx 4096 tx 4096

注意: 有些云服务器或虚拟化环境不允许修改部分参数,会报错,此时跳过对应选项即可。
修改后建议用 ethtool -k eth0 确认。

第三步:中断亲和性与CPU绑定

把网卡中断分配到不同的CPU核心,避免单个核心被中断风暴打满,这对多队列网卡特别有效。

# 查看网卡中断号
cat /proc/interrupts | grep eth0
# 假设irq号为78-85,将它们平均绑定到CPU0-3(以78为例)
echo "1" > /proc/irq/78/smp_affinity   # 只允许CPU0处理(二进制0001)
echo "2" > /proc/irq/79/smp_affinity   # CPU1(0010)
echo "4" > /proc/irq/80/smp_affinity   # CPU2(0100)
echo "8" > /proc/irq/81/smp_affinity   # CPU3(1000)

重要提示: smp_affinity 使用的是十六进制掩码,但直接用十进制数字等效。
如果你有4个CPU,就按上面示例分配。
修改后执行 cat /proc/interrupts 观察中断分布是否均衡。

第四步:修改内核网络参数(永久生效)

调整TCP缓冲区、最大连接数、快速回收等参数,有利于高并发场景。
编辑 /etc/sysctl.conf,添加以下内容:

# 增大TCP读写缓冲区(单位字节)
net.core.rmem_default = 262144
net.core.rmem_max = 16777216
net.core.wmem_default = 262144
net.core.wmem_max = 16777216
# 开启TCP窗口缩放和选择性确认
net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_sack = 1
# 提高处理积压连接的能力
net.core.netdev_max_backlog = 5000
net.core.somaxconn = 1024

保存后执行 sysctl -p 使生效。如果你在云环境或容器里,某些参数可能不允许修改,请根据系统日志跳过。

第五步:验证调优效果

使用 iperf3 分别在调优前后测速,对比吞吐量变化。
在服务器上:

# 服务端(假设IP为192.168.1.100)
iperf3 -s

在另一台客户端:

iperf3 -c 192.168.1.100 -t 30 -P 4

观察输出中的 senderreceiver 速率。
如果调优后吞吐显著提升,说明操作有效。
若变化不大,检查是否还有其他瓶颈(磁盘IO、CPU负载等)。

高频问题与避坑

  • 问题: 修改 ethtool -K 时报错 Operation not supported

解决: 说明网卡驱动或虚拟化环境不支持该特性,跳过即可,不影响基本功能。

  • 问题: 调整 smp_affinity 后中断分配不均衡。

解决: 确保每个中断号写对了掩码,并且CPU核心存在。
可以先用 nproc 查看CPU数。

  • 问题: 重启后所有修改都丢失了。

解决:ethtool 命令写入 /etc/rc.local(记得赋予执行权限),
或使用 systemd service 实现开机自启。sysctl 参数已写在 /etc/sysctl.conf 中,
重启后自动生效。

  • 避坑: 不要同时开启 tcp_tw_recycle(内核已废弃),在NAT环境下会导致问题。永远不要在生产环境开启该参数。

按照以上步骤操作,你的Linux服务器网卡性能调优任务就基本完成了。
先在测试环境跑一遍,确认无误再应用到线上机器。
遇到异常时,优先回看避坑和高频问题部分,通常能快速定位原因。

分享到:
上一篇
WP网站内容分页优化:WordPress网站内容分页优化教程
下一篇
Docker部署ArgoCD:从零开始
1
系统公告

泽御云五一特惠活动🔥

泽御云持证合规运营,资质齐全可查,长久稳定! 五一限时多重福利同步开启: ✅ 香港 2 核 2G 云服务器超值拼团,低价入手团长免费 ✅ 4 核 4G 多机房年付拼团,性价比拉满 ✅ 内蒙古新区限时 7 折(zeyuyunnmg)特惠,专属优惠码锁价续费 ✅ 全站通用 75 折优惠,老用户充值享专属赠金 官方站点:zeyuyun.com 合规资质齐全|售后有保障|活动限时错过不再有
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意