長時間稼働しているマルチテラバイトのアップロードが私のネットワークの帯域幅をすべて奪わないようにする必要がありますが、帯域幅の使用量をプロセスレベルで制限することができます(マシンのネットワークインターフェイス全体を遅くしたり、仕事はしません)。幸いにも、アップロードはDockerでコンテナ化されています。ドッカーのコンテナの送信トラフィックを遅くするにはどうすればよいですか?ドッカーのコンテナからアップロードをレート制限する方法はありますか?
答えて
this questionのおかげで、tc qdisc add dev eth0 root tbf rate 1mbit latency 50ms burst 10000
をコンテナ内で実行してアップロード速度を1メガビット/秒に設定できることに気付きました。ここで
はランダムなファイルを生成し、25キロバイト/秒のおおよそのアップロード速度で/dev/null-as-a-serviceにアップロードすることで、これを証明する例Dockerfileです:
FROM ubuntu
# install dependencies
RUN apt-get update
RUN apt-get install -y iproute curl
# create a large random file to upload
RUN head -c 2M </dev/urandom > /upload.data
# rate-limit the network interface and
# upload the data when docker image is run
RUN echo "#!/bin/bash" >> /upload.sh
RUN echo "tc qdisc add dev eth0 root tbf rate 25kbps latency 50ms burst 2500" >> /upload.sh
RUN echo "curl -d @/upload.data http://devnull-as-a-service.com/dev/null" >> /upload.sh
RUN chmod a+x /upload.sh
ENTRYPOINT exec /upload.sh
あなたはratelimit
というディレクトリの中に、このDockerfileを持っていると仮定すると、
docker build ratelimit -t ratelimit && docker run --cap-add=NET_ADMIN ratelimit
オプションは、そのネットワークインタフェースを変更するためのコンテナの許可を与える:それはあなたがそれを実行することができ、あなたの現在の作業ディレクトリにあります。ドキュメントhereがあります。
Dockerファイルは、最初に必要な依存関係をインストールします。 iproute
はtc
ツールを提供し、curl
はレートリミットをリクエストすることができます。依存関係をインストールした後、アップロードする2MBのランダムファイルを生成します。次のセクションでは、レート制限を設定してアップロードを開始するスクリプトファイルを作成します。最後に、コンテナの実行時に実行するアクションとしてスクリプトを指定します。
このコンテナは、25キロバイト/秒への接続を遅くするために、ネットワークインタフェースに、トークンバケツフィルタを追加します。 Token Bucker Filterに提供されるオプションのドキュメントはhereです。
このDockerfileは(もちろん、アップロードが必要ですどんなツールのインストール後)カールの呼び出しを削除し、その場所にアップロードを実行することにより、他のネットワークタスクを実行するように変更することができます。
- 1. トピックからの消費レートを制限する方法は?
- 2. STL :: mapコンテナの最大サイズを制限する方法はありますか?
- 3. APIのレートを制限する方法
- 4. Django:同じIPまたはユーザーからPOSTSをレート制限する方法は?
- 5. Node.js複数のレート制限を使用するAPIレート制限
- 6. ドッカーのコンテナに特定のインターフェイスをバインドする方法はありますか?
- 7. ドッカー・コンテナからドッカー・マシンに通信する方法は?
- 8. スケーリングされたマイクロサービスでのhttpコールの発信レートを制限する方法はありますか?
- 9. モバイルビューポートのサイズを制限する方法はありますか?
- 10. ドッカーのコンテナを意図的にクラッシュさせる方法はありますか?
- 11. GoogleマイビジネスAPIとV4アップデートのレート制限の変更はありますか?
- 12. 継承を制限する方法はありますか?
- 13. DNSServiceをループバックインターフェイスに制限する方法はありますか?
- 14. データベースのクエリをレート制限するか、減らす必要がありますか?
- 15. mysqlの更新権限を制限する方法はありますか?
- 16. テンプレートパラメータの子X制限を強制する方法はありますか?
- 17. Asyncio&レート制限
- 18. Linuxドッカー・コンテナから起動可能なLinuxライブUSBディスクを作成する方法はありますか?
- 19. ドッカーは完全に新しいコンテナでコンテナを再起動する方法はありますか?
- 20. Softlayer APIにレート制限があります
- 21. gitlab APIにレート制限があります
- 22. Google翻訳API V2のレート制限はいくらですか?
- 23. フロントエンドに通貨レートを得る方法はありますか?
- 24. ドッカー・コンテナの内部からアプリケーションに接続する方法は?
- 25. Twitterのレート制限
- 26. Instagramのレート制限
- 27. クライアント側のサーバーにアップロードするファイルのサイズを制限する方法はありますか?
- 28. PHP - APIのレートを制限する方法
- 29. PerlNetの制限はありますか?
- 30. onSaveInstanceStateの制限はありますか?