1

C# redis のベンチマークは何ですか? 456 バイトのデータで Tcp/ip 経由で redis に接続しようとしています。以下のようなベンチマーク:

hset - 600 書き込み/秒、ループ 10000 回 600 読み取り/秒、ループ 10000 回

これ普通?転送速度が 156 kbps と遅いため、tcp/ip 転送速度が遅いと思われます。TCP 受信ウィンドウ サイズを設定しましたが、速度は同じです。tcp/ipを介してubuntuベンチマークredisも使用してみました。転送速度は最大 3 mbps です。hset - >10k/秒。

4

1 に答える 1

2

問題はおそらくレイテンシーです。redis は 1 秒あたり何千もの操作を処理できますが、単一の同期接続はほとんどの時間をネットワークの待機に費やします。あなたのテストループは実際には次のようなものです:

Client                Network       Server 
send GET     
                      1ms         
                                    Process GET (0.01 ms)
                      1ms
Result received 

したがって、操作には合計 2.01 ミリ秒かかりますが、クライアントとサーバーの両方がそのほとんどの間アイドル状態でした。これは、並列処理をうまく利用できることを意味します。つまり、ループを 100 のスレッドに分割して、ネットワークで待機することがなく、同じ 2 ミリ秒で 100 の結果を取得できます。

ubuntu の違いは、おそらく、redis と同じサーバーで実行しているという事実によるものです。Unix ソケットではなく IP を使用しているにもかかわらず、localhost は異なるサーバー間の接続よりもはるかに短いレイテンシーを持っています。

于 2011-07-22T01:38:36.400 に答える