RavenDB のクエリに対する応答時間は長いですが、サーバー上では非常に高速に処理されました

StackOverflow https://stackoverflow.com/questions/3811804

  •  26-09-2019
  •  | 
  •  

質問

Raven.Server が起動し、ポート 8022 にバインドされました。次の方法で DataStore を初期化します。

        var store = new DocumentStore() { Url = "http://localhost:8022" };
        store.Initialize();

次に、次のようなクエリを作成します。

        using (var session = store.OpenSession())
        {
            Stopwatch watch = new Stopwatch();
            watch.Start();

            var result = session.LuceneQuery<Item>("Raven/DocumentsByEntityName")
                .WhereEquals("Tag", "Items")
                .ToList();

            watch.Stop(); // watch.ElapsedMilliseconds == ~550 ms

            return result;

        }

そして watch.ElapsedMilliseconds は常に ~550 ミリ秒です。しかし、RavenDB コンソールを見ると、クエリが 3 ミリ秒で処理されたことがわかります。

Request # 170: GET     -    3 ms - 200 - /indexes/Raven/DocumentsByEntityName?query=Tag%253A%255B%255BItems%255D%255D&start=0&pageSize=128

したがって、時間の ~ 99.5% は RavenDB 以外で費やされています。何が問題ですか?(レイブンDB 147)

RavenDB のセルフホスティングに切り替えると (つまり、組み込みクライアントとして)すべて問題ありません(約 3 ミリ秒)。

ネットワーク、http デバッガー、DNS サーバーなどに問題がないことを明確にするため。私もこれをテストしました:

            Stopwatch watch = new Stopwatch();
            watch.Start();

            WebClient client = new WebClient();
            var result = client.DownloadString("http://127.0.0.1:8022/indexes/Raven/DocumentsByEntityName?query=Tag%253A%255B%255BItems%255D%255D&start=0&pageSize=128");

            watch.Stop(); // watch.ElapsedMilliseconds == ~3-10ms

速い。ただし、Raven.Client.Lightweight に切り替えると、応答時間が 200 倍 (550 ~ 600 ミリ秒) 増加します。

役に立ちましたか?

解決

問題は、私のコンピュータ上の仲介であった - NOD32。あなたもそれを使用している場合 - 次のチェックボックスのチェックを外します:

設定 - >詳細設定 - >ウイルス対策とスパイウェア対策 - >プロトコルフィルタリング - >

"フィルタリングアプリケーションprotocalコンテンツを有効にします"

簡単なアンチウイルスの無効化またはファイアウォールのいないの助け!

他のヒント

細かいことかもしれないし、単なるタイプミスかもしれませんが、時には最も愚かな事柄によって私たちは気が狂ってしまうことがあります。

あなたのステートメント:「Raven.Server が起動され、ポートにバインドされました」 8082. 。次の方法で DataStore を初期化します。」

コード例は次のようになります。"var store = new DocumentStore() { URL = "http://localhost:8022" };"

タイトルのポートは 8082 あなたの例のポートは 8022.

タイプミスが実際のコードに含まれていない可能性があることは承知していますが、確認することは決して悪いことではありません。

「私は言っているだけです」

P

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top