RavenDB查询响应时间长,而在服务器上处理速度非常快

时间:2010-09-28 10:29:56

标签: .net ravendb

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 ms。 但是当我查看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中。问题是什么? (RavenDB 147)

当我切换到RavenDB的自托管(即作为嵌入式客户端)时,一切都还可以(~3ms)。

澄清该问题不在网络,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毫秒)

2 个答案:

答案 0 :(得分:6)

问题是因为我的电脑上的中间人 - NOD32。如果您还在使用它 - 请取消选中以下复选框:

设置 - &gt;高级设置 - &gt;防病毒和反间谍软件 - &gt;协议过滤 - &gt; “启用应用程序协议内容过滤”

简单禁用防病毒软件或防火墙无法帮助!

答案 1 :(得分:0)

也许是挑剔,也许只是一种典型的东西,但有时候最愚蠢的事情会让我们疯狂;

你的陈述:“Raven.Server启动并绑定到端口 8082 。我按以下方式初始化DataStore:”

您的代码示例如下: “var store = new DocumentStore(){Url =”http:// localhost: 8022 “};”

标题中的端口 8082 ,示例中的端口为 8022

我意识到你的典型代码可能不在你的实际代码中,但它绝不会让你受伤。

'm jus'sayin'

P