我遇到了Docker容器和主机网络之间网络性能不佳的问题。我在Docker的论坛上问了这个问题,但到目前为止还没有收到答案。主机网络的Docker容器网络性能非常慢
问题
设置:在同一本地网络上的两台Mac;第一个运行MQTT经纪人(mosquitto);第二个运行Mac的Docker。两台C++程序在第二台Mac上运行,并使用Paho MQTT C库通过MQTT代理(第一台Mac)多次交换数据。本机运行:当我原生运行两个C++程序时,网络性能非常好,如预期的那样。这些程序是用XCode 7.3编译的。
Docker运行:当我在Docker中运行任一C++程序或它们两个时,网络性能急剧下降,大约比本机运行慢30倍。 Docker镜像基于ubuntu:latest,并且这些程序是由gcc构建的(Ubuntu 5.4.0-6ubuntu1〜16.04.1)5.4.0 20160609.
我尝试使用主机网络(--network = “主机”在Docker运行),但它没有帮助。我还尝试在第二台Mac上运行MQTT代理(以便代理和容器在同一台主机上运行);问题依然存在。我的工作局域网和家庭网络上都存在这个问题。
理论上,它可能是C++程序在Docker容器中通常很慢。但我怀疑是这样,因为根据我的经验,Docker中C++代码的一般性能与本机环境中的性能差不多。
问题
什么可能是这个问题的原因? Docker中有没有可以解决这个问题的设置?
感谢您的回答。我尝试了你的建议。 CPU使用率非常低(0.3%),2Gb限制的内存使用量为4.4Mb,超过35秒的净I/O总计约为500Kb/400Kb。因此,网络I/O速度仅为14Kb和11Kb /秒,在现代计算机和网络上速度异常缓慢。本土跑了不到1秒。任何建议? – Truong
@Truong你可以检查我在编辑中添加的MTU设置吗? –
Docker for Mac上不存在MTU选项:https://docs.docker.com/docker-for-mac/networking/。我想默认情况下MTU将被设置为匹配主机的值(在我的情况下是1500)。 – Truong