ifconfig命令用于查看和配置Linux网络接口状态及参数,支持启用/禁用网卡、设置IP地址、子网掩码、广播地址、MAC地址、MTU等,但配置重启后失效,需结合sysctl或配置文件持久化。

直接调大网卡 RX Ring Buffer 是解决底层硬件级丢包最有效的第一步,但必须结合内核接收队列和 socket 缓冲区同步优化,否则单点调优效果有限。
确认是不是 Ring Buffer 不足导致的丢包
先看关键指标是否持续上涨:
- ifconfig eth0 中 RX overruns 增长 → 表明数据还没进 Ring Buffer 就被 FIFO 丢弃
- ethtool -S eth0 | grep -E "rx_missed_errors|rx_fifo_errors|rx_over_errors" 非零且上升 → Ring Buffer 溢出或驱动处理不过来
- 如果 rx_dropped 上涨但 overruns 稳定 → 问题在内核协议栈或 socket 层,Ring Buffer 调整意义不大
查看并安全调整网卡 Ring Buffer 大小
运行 ethtool -g eth0 查当前值和硬件上限:
Linux系统管理专家,覆盖12大模块:用户权限、SSH、存储、网络、systemd、防火墙、日志监控、备份恢复、TLS证书、Ansible、容器、IaC。提供配置、验证、加固、监控、备份、自动化、故障排查、回滚闭环。关键词:useradd、sudo、sshd_config、chmod、SEL...
- 关注 Pre-set maximums: RX(如 4096),这是网卡驱动允许的最大值,不能超
- 默认值常为 256(igb)或 512(ixgbe),千兆以上带宽或小包场景下极易不足
- 推荐阶梯式调整:ethtool -G eth0 rx 2048 → 观察几分钟 → 仍丢包再试 rx 4096
- TX 缓冲区一般无需调整;部分老旧网卡(如 Realtek)不支持动态修改,会提示 “Operation not supported”
必须同步调优内核与 socket 接收缓冲区
Ring Buffer 只管“网卡到内核”的一跳,后面还有两道关卡:
- 设大系统级上限:sysctl -w net.core.rmem_max=26214400(25 MB),否则应用层 setsockopt(SO_RCVBUF) 会被静默截断
- 提升软中断入口队列:sysctl -w net.core.netdev_max_backlog=30000,避免突发流量在拷贝前堆积溢出
- 应用启动时显式设置:setsockopt(fd, SOL_SOCKET, SO_RCVBUF, &size, sizeof(size)),建议 ≥ 4 MB
- 检查默认值是否拖后腿:sysctl net.core.rmem_default,若过小(如 212992)也应同步调高
验证与长期固化
调整后要看到真实生效和稳定效果:
- 用 ethtool -g eth0 确认 RX 值已更新
- 持续观察 watch -n1 'ethtool -S eth0 | grep -E "rx_.*over|rx_missed"' 计数器是否停止增长
- 查 socket 级别:运行 ss -nump | grep udp,看 skmem 中 rb 字段是否达到预期值
- 临时命令重启失效,需写入 /etc/sysctl.conf 或通过 udev rule / network-manager 配置固化

















