用 ifconfig 优化 CentOS 网络性能的可行做法
一 作用边界与前提
- ifconfig 主要用于查看与临时配置网络接口参数,例如 IP、子网掩码、广播地址、MTU、接口启停 等;其修改在重启后通常不持久,更适合测试与临时调优。若需持久化,应写入网卡配置文件或使用网络管理工具(如 NetworkManager、ifcfg 脚本)。在生产环境调整前务必先基线测量,小步变更并复测,避免引入不稳定因素。
二 基于 ifconfig 的立即可做项
- 调整 MTU:在确认整条链路(网卡、交换机、对端)支持的前提下,适当增大 MTU 可减少分片、提升吞吐。示例:将 eth0 的 MTU 设为 9000(巨帧)。注意:并非所有设备/协议都支持大 MTU,设置不当会导致丢包或性能下降。
- 命令:
ifconfig eth0 mtu 9000
- 调整 发送队列长度 txqueuelen:增大队列可在高带宽/突发流量下缓冲更多待发送包,缓解瞬时拥塞(需结合应用与驱动/网卡能力谨慎设置)。示例:将 eth0 的队列设为 5000。
- 命令:
ifconfig eth0 txqueuelen 5000
- 启用/禁用接口与杂项:关闭不需要的接口可降低干扰;必要时开启/关闭 promisc(混杂)模式用于抓包排查,但会增加 CPU 与缓存压力,勿长期开启于生产。
- 命令:
ifconfig eth1 down,ifconfig eth0 promisc / ifconfig eth0 -promisc
- 说明:像 发送/接收缓冲区大小、窗口缩放、连接回收/重用 等更关键的性能参数并非由 ifconfig 设置,需配合内核 sysctl 或专用工具(如 ethtool)调整。
三 配套优化与持久化建议
- 用 ethtool 优化网卡与驱动层:
- 调整 Ring Buffer(提升突发接收能力,减少丢包):
ethtool -G ens33 rx 2048 tx 1024
- 检查/开启 多队列(RSS):
ethtool -L eth0 combined 4
- 调整 内核网络参数(示例为常见、相对安全的起点,按带宽与延迟目标微调):
- 增大套接字缓冲上限:
net.core.rmem_max=16777216、net.core.wmem_max=16777216
- 设置 TCP 缓冲区动态范围(示例值,单位字节):
net.ipv4.tcp_rmem="4096 87380 33554432"
net.ipv4.tcp_wmem="4096 65536 33554432"
- 启用窗口缩放:
net.ipv4.tcp_window_scaling=1
- 加速连接回收(高并发短连接场景):
net.ipv4.tcp_tw_reuse=1、net.ipv4.tcp_fin_timeout=30
- 应用:
echo "net.core.rmem_max=..." >> /etc/sysctl.d/99-sysctl.conf && sysctl -p
- 持久化 ifconfig 变更:
- 将 MTU、队列长度等写入对应 ifcfg-(如 /etc/sysconfig/network-scripts/ifcfg-ens33)的
MTU=9000、TXQUEUELEN=5000 等字段,随后 systemctl restart NetworkManager 或 systemctl restart network 使其生效(不同 CentOS 版本服务名可能不同)。
四 验证与回滚
- 基线与前/后对比:使用 nload、iftop 观察带宽与流量分布,结合应用指标(P95/P99 延迟、重传率、错误包)评估优化成效。
- 安装与观测:
yum install -y nload iftop;nload、iftop -i eth0
- 回滚策略:对 ifconfig/ethtool 的变更,准备好“原值”命令以便快速恢复;对 sysctl 变更,保留备份文件,必要时
sysctl -p 重载或回滚配置片段。