Docker 容器之间的覆盖网络连接滞后 simetimes,为 1 的倍数

Docker 容器之间的覆盖网络连接滞后 simetimes,为 1 的倍数

在高流量(连接频率)的覆盖网络上相互通信的两个容器偶尔会出现连接延迟,几乎恰好是 1 秒的倍数。两个容器运行在同一主机上还是在两台物理机之间运行并不重要。

  • Ping 完全没有延迟,只有 TCP 连接受到影响
  • 这不是 DNS 问题,使用其他容器的 IP 地址测试连接

我尝试过设置一些基于的内核参数https://github.com/moby/moby/issues/35082因为这听起来与我的问题相似

for ns in /var/run/docker/netns/lb_* /var/run/docker/netns/ingress_sbox
do
    nsenter --net=$ns sysctl -w net.ipv4.vs.conn_reuse_mode=0;
    nsenter --net=$ns sysctl -w net.ipv4.vs.expire_nodest_conn=1;
    nsenter --net=$ns sysctl -w net.ipv4.vs.expire_quiescent_template=1;
done

但那里没有运气...

从容器的角度来看,对所有条目运行它/var/run/docker/netns/*似乎也会改变参数,但延迟频率仍然没有变化。

Docker 版本20.10.12。当前内核是5.15.32,根据net/netfilter/ipvs/ip_vs_core.c文件,补丁似乎来自https://lkml.org/lkml/2020/6/16/254已经以某种形式合并到内核源代码中。

附加信息:

  • net.ipv4.vs.conntrack = 0
  • net.netfilter.nf_conntrack_tcp_be_liberal = 1

相关内容