我遇到了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