RavenDB долгое время ответа на запрос, хотя обрабатывалось на сервере очень быстро - PullRequest
2 голосов
/ 28 сентября 2010

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.В чем проблема?(RavenDB 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 мс)

Ответы [ 2 ]

6 голосов
/ 29 сентября 2010

Проблема была из-за посредника на моем компьютере - NOD32.Если вы также используете его - снимите следующий флажок:

Настройка -> Расширенные настройки -> Антивирус и антишпионское ПО -> Фильтрация протоколов -> «Включить фильтрацию содержимого протокола приложения»

Простое отключениеантивирус или брандмауэр не помогают!

0 голосов
/ 28 сентября 2010

Может быть, придирки и, может быть, просто печатать, но иногда самые глупые вещи могут свести нас с ума;

ваше заявление: "Raven.Server запущен и привязан к порту 8082 . Я инициализирую DataStore следующим образом:"

ваш пример кода читает: "var store =new DocumentStore () {Url = "http://localhost:8022"};"

порт в заголовке - 8082 , а порт в вашем примере - 8022 .

Я понимаю, что ваш typ-o может отсутствовать в вашем реальном коде, но проверять его никогда не помешает.

'jus' sayin '

P

...