4

https 経由で大量のデータを OpenStack Object Storage にアップロードする golang ユーティリティがあります。私は Ubuntu Linux で実行していますが、最大アップロード帯域幅が 2,500KB/s を超えないようにしたいと考えています。できれば同じシステムの他のユーザーに影響を与えないようにしたいと考えています (つまり、イーサネット インターフェイスの速度が低下します)。

できればソースコードを変更せずに、どうすればこれを行うことができますか? これまでにいくつかのアプローチを試しました:

  1. トラフィック シェーピング:単一のプロセスに影響を与える適切なネットワーク シェーピング手法を見つけることができませんでしたが、 と で可能であることはわかっていiptablesますtc。これを行う方法についてのガイダンスをいただければ幸いです。私のネットワーキングのバックグラウンドはそれほど広範囲ではありません。
  2. Flowrate Limiting:flowrate go でパッケージを使用して、アップロードへの書き込みをレート制限しようとしました。これには目に見える効果はありませんでした。github.com/ncw/swift.ObjectCreateFile.Write()メソッドは受信したデータをアップロードするのではなく、閉じたときにデータをアップロードするため、これは機能しないと思います。私はこれについて間違っている可能性があります。
  3. トリクル:コマンドを試しましたtrickleが、golang 実行可能ファイルと互換性がありません (この質問を参照してください)
4

2 に答える 2

2

Golang プロセスを Docker コンテナーにラップし、このtcユーティリティーを使用して (コンテナー内から) Docker コンテナーのネットワーク・インターフェースをレート制限できることがわかりました。これを行う Dockerfile の例については、この回答を参照してください。

于 2016-11-04T18:11:46.150 に答える