2016-09-01 4 views
1

私は文書DB performance guidanceを読んだことがありますが、文書DBに対する最初の要求はまだ遅いです。 client.OpenAsync()チップを使用しており、Directモードで接続しています(TCP)。私はこれらの時間を参照してくださいHTTPSGatewayモードを使用してAzure Document DBへの最初の要求が後続の要求よりもずっと遅いのはなぜですか?

var endpoint = ""; 
var key = ""; 

var connectionPolicy = new ConnectionPolicy 
{ 
    ConnectionMode = ConnectionMode.Direct, 
    ConnectionProtocol = Protocol.Tcp 
}; 

var client = new DocumentClient(new Uri(endpoint), key, connectionPolicy); 
var collection = UriFactory.CreateDocumentCollectionUri("test", "TestCollection"); 

await client.OpenAsync(); 

for (int i = 0; i < 5; i++) 
{ 
    var test = new Test { Foo = $"Test doc {i}" }; 
    await client.CreateDocumentAsync(collection, test);  
} 

enter image description here

私はこの問題をレポするサンプルプログラムを(これ gistは、記録時間を含む完全なソースを持って)書かれている

DirectモードでTCP以上これらは:

enter image description here

あなたが見ることができるように、TCPオーバーDirectモードは、後続の要求のためにはるかに高速ですが、最初の要求はまだはるかに遅いです。

これには理由がありますか?そして、最初の応答時間を短縮するためにできることは何ですか?

UPDATE

私はHTTPS応答が私の最初のテストでTCPよりもはるかに遅い理由は、私たちAzureの仮想マシンのうち、すべてのHTTPSトラフィック我々は、プロキシ忘れて。オフプロキシと

、および(プロファイルに文書DB & SDK、および7をウォームアップする3)10回の反復を実行している、私は今DirectTCP超えるためGatewayHTTPS超えると〜7MSのために〜11ms以下までの応答時間を参照してください。言及したポスターのような

+0

私は、同じAzureデータセンターの外部でRESTインターフェイス(.NET以外のすべてのSDKが使用する)を使用することについて不安があると確信しています。同一のAzureデータセンターでホストされているNodeJ上で、自社のサーバーからのDocumentDB操作と比較して実行されるノード間の差分は、当社のサーバーが存在するネットワークの帯域幅と待ち時間の差によって説明されません(40倍)。私たちが同じデータセンターを運営して以来、私たちにとっては問題ではありませんが、本当にAzureの誰かがこの問題を見て欲しいと思います。 –

+0

あなたの見出しの質問に対する答えは、他のデータベースに見られるような「温暖化」の振る舞いを模倣するので、驚くべきことではありません。 –

+1

[DocumentDBパフォーマンスの問題]の重複が考えられます(http:// stackoverflow。com/questions/33088927/documentdb-performance-issues) – Fred

答えて

3

が、これはSDKがDocumentDBデータ・パーティションの物理アドレスを取得するように追加のセットアップ作業を行いますので、非常に最初の操作がDocumentDBに長い数秒かかりますDocumentDB performance issues

でカバーされています。その後の操作は、1桁のミリ秒のオーダーで完了します(スクリーンショットのような書き込みの場合は約7ms、通常は2ms未満の読み取り)。

+0

ありがとう@Aravind Ramachandran。上記の私の更新を見てください。 http://stackoverflow.com/a/33090447/1288481で提案したように、サーバーとSDKがウォーミングアップする時間を許すと、応答時間が長くなります。 –

0

DocumentDBは、p99レベルでレイテンシとスループットが低くなります。そのためには、接続を確立しプールし、メタデータをダウンロードして効率的なルーティングキャッシュや他の多くの最適化を大規模に行うための償却コストがあります。これは、少し前払いのコストがある理由です。

関連する問題