1

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 上。问题是什么?(乌鸦数据库 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 毫秒)

4

2 回答 2

6

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

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

Simple disabling of antivirus or firewall doesn't help!

于 2010-09-29T15:13:14.297 回答
0

也许吹毛求疵,也许只是一个典型,但有时最愚蠢的事情会让我们发疯;

您的声明:“Raven.Server 已启动并绑定到端口8082。我以以下方式初始化 DataStore:”

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

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

我意识到您的 typ-o 可能不在您的实际代码中,但检查它永远不会有坏处。

'我只是'说'

于 2010-09-28T13:43:23.070 回答