全部学科
Python全栈
python
NodeJS全栈
nodejs
小程序首页
📅 2026-05-21 7 分钟 ✍️ juanwangdev

网络延迟优化

容器网络延迟直接影响应用性能,下面介绍优化方法。

MTU 配置

默认 MTU 问题

Bash
# 查看默认 MTU
docker network inspect bridge | grep MTU

# 输出
"MTU": 1500  # 可能与物理网络不匹配

调整 MTU

JSON
// /etc/docker/daemon.json
{
  "mtu": 1450  // 匹配物理网络
}
Bash
# 重启生效
sudo systemctl restart docker

MTU 不匹配导致分片,增加延迟。应与物理网络 MTU 匹配。

网络驱动选择

驱动延迟适用场景
host最低高性能网络
bridge通用
overlay跨主机
Bash
# 低延迟场景使用 host 网络
docker run -d --network host my-high-throughput-app

TCP 优化

Bash
# 容器内 TCP 调优
docker run -d \
  --sysctl net.core.rmem_max=16777216 \
  --sysctl net.core.wmem_max=16777216 \
  --sysctl net.ipv4.tcp_rmem='4096 87380 16777216' \
  --sysctl net.ipv4.tcp_wmem='4096 65536 16777216' \
  my-app

缓冲区优化

Bash
# 增加网络缓冲区
docker run -d \
  --sysctl net.core.netdev_max_backlog=262144 \
  --sysctl net.core.somaxconn=65535 \
  my-app

多队列网卡

Bash
# 启用 RSS (Receive Side Scaling)
ethtool -L eth0 combined 8

# 绑定 IRQ 到特定 CPU
for i in $(seq 0 7); do
  echo $i > /proc/irq/$i/smp_affinity
done

监控网络延迟

Bash
# 容器内测试延迟
docker exec my-app ping -c 10 target-host

# 查看网络统计
docker exec my-app netstat -s

# 抓包分析
docker exec my-app tcpdump -i eth0 port 80

要点总结

  • MTU 配置匹配物理网络,避免分片增加延迟
  • 低延迟场景使用 host 网络驱动,避免 NAT 开销
  • TCP 缓冲区优化提升高吞吐场景性能
  • 多队列网卡 + RSS 分散中断到多 CPU
  • --sysctl 运行时调整网络内核参数

📝 发现内容有误?点击此处直接编辑

← 上一篇 构建缓存策略
下一篇 → 镜像层优化与瘦身
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库