Dockerコンテナとホストのネットワーク間のネットワークパフォーマンスが低下しています。私はDockerのフォーラムでこの質問をしましたが、これまでの回答はありませんでした。ホストのネットワークとのDockerコンテナのネットワークパフォーマンスが非常に遅い
問題
セットアップ:同じローカルネットワーク上に2つのMacがあります。最初はMQTTブローカー(mosquitto)を実行します。 2番目はDocker for Macを実行します。 2つ目のMacで2つのC++プログラムが実行され、Paho MQTT Cライブラリーを使用してMQTTブローカー(最初のMacの場合)を介してデータを複数回交換します。
ネイティブ実行:ネイティブに2つのC++プログラムを実行したとき、ネットワークのパフォーマンスは期待どおりに優れていました。プログラムはXCode 7.3で構築されました。
Dockerが実行されます:DockerでC++プログラムのいずれか、またはその両方を実行したとき、ネットワークパフォーマンスが大幅に低下し、ネイティブ実行より約30倍遅くなりました。 Dockerイメージはubuntuに基づいています:最新のもので、gcc(Ubuntu 5.4.0-6ubuntu1〜16.04.1)5.4.0 20160609.
私はホストネットワーク(--network = Dockerで "host"を実行しても問題ありませんでした)。また、2番目のMacでMQTTブローカーを実行しようとしました(ブローカーとコンテナーが同じホスト上で実行されるように)。問題は持続した。この問題は私の仕事用LANと私のホームネットワークに存在していました。
理論的には、C++プログラムは一般的にDockerコンテナでは遅かった可能性があります。しかし私の経験では、DockerのC++コードの一般的なパフォーマンスは、ネイティブ環境と同じくらい速いため、これが当てはまるとは思えません。
質問
この問題の原因は何ですか? Dockerにこの問題を解決するための設定がありますか?
あなたの答えをありがとう。私はあなたが提案したことを試しました。 CPU使用率は非常に低く(0.3%)、メモリ使用量は4.4Mbの2Gb制限、ネットI/Oは約500Kb/400Kbの合計で35秒を超えています。したがって、現行のコンピュータとネットワークでは、ネットI/O速度はわずか14Kbと1秒あたり11Kbでした。ネイティブランは1秒未満で完了しました。なにか提案を? – Truong
@Truong EDITに追加したMTU設定を確認できますか? –
Docker for MacにMTUオプションが存在しません:https://docs.docker.com/docker-for-mac/networking/ MTUはデフォルトでホストの値と一致するように設定されています(私の場合は1500)。 – Truong