2016-08-16 5 views
2

私は、データベースバックアップをazureのブロブコンテナにアップロードするアプリケーションを用意しています。晴れブロブのアップロード速度を制限する方法

私はブロブコンテナに転送されている一方で、それは絶対にそのネットワーク上の他のすべてを殺す、11Mbpsの

の平均速度ですべてがしかし、正常に動作している、サイズが8ギガバイトの周りのファイルをアップロードしています。

私の質問はですので、アップロード速度を紺色に制限する方法はありますか?

+0

これは、Azureの問題、あなたの最後のではなく、ネットワーク構成の問題のような音はありません。あなたはQoSを調査する必要があります。 –

+0

アップロードが十分速く、ネットワークは正常です。問題はそれが少し速すぎてアップロードしている、私は何とかそれを絞るしたいと思います。 –

+0

"ネットワーク上の他のすべてが絶対に抹殺されます" - このため、QoSを調査することをお勧めします。明らかにあなたのネットワークは綺麗ではありません。 –

答えて

1

Azure Storage自体は、特定のスロットル設定を提供しません。ただし、ブロブのアップロードは基本的に一連のRESTベースのブロックブロブPUT操作であるため、独自のアップロード実装を行い、ブロックを特定のBLOBにアップロードする頻度を選択することで、独自の調整を行うことができます。

+0

ダビッドありがとう、私は今これをインパクトしようとするつもりです! –

+0

デビッド、あなたは車輪を再発明するためにこの男をお勧めします。 –

+0

@SaschaGottfried私はそのようなことはまったく勧めていません。 OPが望む機能は存在しません。しかし、ブロックアップロードプロトコルでは、ブロックを管理することができます(ブロックをアップロードするための記事がたくさんあります - それを再考する必要はありません)。 –

0

ネットワークインターフェイスで最大アップロード帯域を設定する方が良いかもしれません。これは、クライアントアプリケーションに対して完全に透過的で、優れた設計目標です。別のQoSネットワーク内のソフトウェアはカスタム調整なしで動作します。

このSO question is about limiting network speedには、この目的のためのツールがいくつか記載されています。データベースバックアップを実行しているマシンがWindowsを使用している場合は、BWMeterのようなものを試してネットワーク速度を制限してください。

インターネットゲートウェイ(WAN/DSLルータ)がトラフィックシェーピングを実行するようにネットワークを構成する方がはるかに優れた戦略です。それが十分にうまくいくかどうかは、製品によって異なります。

どちらの方法も、アプリケーションにカスタムスロットルを実装する代替方法に比べて、長期的にはコストが低くなるはずです。

0

あなたの質問では、どのプログラミング言語(または生のREST)でアップロードスピードの調整が必要かを指定していません。しかし、正式なAzureストレージ.NET SDK(Microsoft.WindowsAzure.Storage)を使用してこれを行う方法が見つかりました。

SDK自体には明示的なスピードスロットル機能はありません。しかしながら、のようなUpload*Async()の機能は、IProgress<StorageProgress>の実装をとることによって進捗報告をサポートし、そのReport()メソッドを定期的に呼び出す。 それはそれを同期的に呼び出すようです。

Report()に遅延を入れてアップロード速度を抑えることができます。さらに良い点は、ReportBytesTransferredに関する情報を提供していることです。したがって、進行状況ハンドラが継続時間を追跡している場合。次に、現在のアップロード速度を見積もり、それを使って正確にスロットルを調整します。

以下は、この考え方の例です。これは単なるアイディアのデモです。私は3分以内にまとめました。レート推定とスロットルアルゴリズムはかなり粗く、十分にテストされていません。ここで

は指数関数的には私もput below code snippet as a gistより良いバージョン管理とコラボレーションのためにあなたが

await blob.UploadFromFileAsync(
    @"some_file.dat", 
    null, null, null, 
    new RateThrottleProgress(300 * 1024), // throttle at 300kb/s 
    CancellationToken.None); 

それを使用する方法を

class RateThrottleProgress : IProgress<StorageProgress> 
{ 
    private readonly DateTime start = DateTime.Now; 
    private readonly long maxbps; 
    private long baseDelay, delay; 

    public RateThrottleProgress(long maxbps) 
    { 
     this.maxbps = maxbps; 
     baseDelay = 10; 
     delay = baseDelay; 
    } 

    public void Report(StorageProgress value) 
    { 
     double duration = (DateTime.Now - start).TotalSeconds; 
     double bps = value.BytesTransferred/duration; 
     if (bps > maxbps) delay *= 2; 
     else delay = Math.Max(baseDelay, delay/2); 
     Console.WriteLine($"current estimated upload speed: {bps/1024.0} KB/s. delay: {delay} ms"); 
     Thread.Sleep(TimeSpan.FromMilliseconds(delay)); 
    } 
} 

バックオフスロットラーの実装です。効果で

スロットル:

current estimated upload speed: 287.486007463505 KB/s. delay: 10 ms 
current estimated upload speed: 290.086402388889 KB/s. delay: 10 ms 
current estimated upload speed: 292.685419108659 KB/s. delay: 10 ms 
current estimated upload speed: 295.28201245662 KB/s. delay: 10 ms 
current estimated upload speed: 297.876060423937 KB/s. delay: 10 ms 
current estimated upload speed: 300.469027029562 KB/s. delay: 20 ms 
current estimated upload speed: 302.927815243916 KB/s. delay: 40 ms 
current estimated upload speed: 305.112558483135 KB/s. delay: 80 ms 
current estimated upload speed: 306.778888691779 KB/s. delay: 160 ms 
current estimated upload speed: 307.367196107083 KB/s. delay: 320 ms <-- speed starts to drop from here... 
current estimated upload speed: 305.910611140488 KB/s. delay: 640 ms 
current estimated upload speed: 300.564767027164 KB/s. delay: 1280 ms 
current estimated upload speed: 288.206861583389 KB/s. delay: 640 ms 
current estimated upload speed: 283.672713628354 KB/s. delay: 320 ms 
current estimated upload speed: 282.668039190231 KB/s. delay: 160 ms 
current estimated upload speed: 283.351226090087 KB/s. delay: 80 ms 
current estimated upload speed: 284.861107569046 KB/s. delay: 40 ms 
current estimated upload speed: 286.781960850501 KB/s. delay: 20 ms 
current estimated upload speed: 288.910675693183 KB/s. delay: 10 ms 
current estimated upload speed: 291.140146046991 KB/s. delay: 10 ms 
current estimated upload speed: 293.358817316007 KB/s. delay: 10 ms 
関連する問題