트래픽(연결 빈도)이 높은 오버레이 네트워크에서 서로 통신하는 두 컨테이너는 때때로 거의 정확히 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/*
매개변수가 변경되는 것처럼 보이지만 대기 시간 빈도는 여전히 변경되지 않습니다.
도커 버전 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