docker网络中的docker tcp重传

标签 docker docker-networking docker-network

TCP 重新传输发生在任何 docker 网络上。

简单测试:在Azure、centos 7,7中创建虚拟机

yum update
yum install docker
systemctl start docker
docker run --name mynginx1 -P -d nginx

tshark -tad -i any -Y "tcp.analysis.retransmission"

curl localhost:32768

这会导致 TCP 重传的发生。

[root@vm1 ~]#  tshark -tad -i any -Y "tcp.analysis.retransmission"
Running as user "root" and group "root". This could be dangerous.
Capturing on 'any'


121 2020-04-24 07:26:55.504210673 109.81.211.189 -> 10.0.0.4     SSH 92 [TCP Retransmission] Encrypted request packet len=36
418 2020-04-24 07:27:04.982215355 109.81.211.189 -> 10.0.0.4     SSH 92 [TCP Retransmission] Encrypted request packet len=36
572 2020-04-24 07:27:10.746826933   172.17.0.1 -> 172.17.0.2   HTTP 147 [TCP Retransmission] GET / HTTP/1.1
576 2020-04-24 07:27:10.747858244   172.17.0.2 -> 172.17.0.1   TCP 307 [TCP Retransmission] http > 40514 [PSH, ACK] Seq=1 Ack=80 Win=29056 Len=239 TSval=1217913 TSecr=1217912
580 2020-04-24 07:27:10.747930345   172.17.0.2 -> 172.17.0.1   TCP 680 [TCP Retransmission] http > 40514 [PSH, ACK] Seq=240 Ack=80 Win=29056 Len=612 TSval=1217914 TSecr=1217913[Reassembly error, protocol TCP: New fragment overlaps old data (retransmission?)]

Kubernetes上同样的问题(用flannel插件测试)

这个问题显着降低了容器的性能,在我们的例子中,docker 中的高性能消息解析器的结果减少了 4 倍。使用 docker host network 解决了这个问题。但是使用桥接网络会导致这个问题。

请提供任何建议/帮助? 供引用——从wireshark看重传的原因是乱序/重复 enter image wireshark trace detail

最佳答案

最终我们发现了基于 Alpine 的使用图像中的问题。在我们将 docker 基础镜像移动到 debian/ubuntu 后,重传问题消失了。

关于docker网络中的docker tcp重传,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61403438/

相关文章:

docker - 如何从一个 docker 容器执行命令到另一个

docker:EC2 实例中堆栈中的容器不继承 dns 名称服务器

docker - 容器在docker-compose中无法在网络中通信

python - 如何正确导入 Azure SDK for Python 3.6

spring - 我如何从 Docker 'run' 命令设置 Spring Boot 属性

amazon-web-services - 无法使用 travis ci 在 elasticbeanstalk 中部署 docker 应用程序

docker - 如何使用Docker远程API使用另一个容器的网络 namespace 创建容器

docker - 为什么我无法连接到 docker 中的 postgres?

macos - 无法从主机访问 Docker swarm 中的 Web 服务器

docker - ddev + elasticsearch的最新版本