RAVENDB وقت استجابة طويل للاستعلام ، بينما تمت معالجتها على الخادم بسرعة كبيرة

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

  •  26-09-2019
  •  | 
  •  

سؤال

بدأ Raven.Server وملعون إلى المنفذ 8022. أقوم بتهيئة مخزن البيانات بالطريقة التالية:

        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 مللي ثانية)

هل كانت مفيدة؟

المحلول

كانت المشكلة بسبب الوسيط على جهاز الكمبيوتر الخاص بي - NOD32. إذا كنت تستخدمه أيضًا - قم بإلغاء تحديد خانة الاختيار التالية:

الإعداد -> الإعداد المتقدم -> مضاد للفيروسات ومضاد للبروتوكول -> تصفية البروتوكول -> "تمكين تصفية المحتوى البروتوكالي للتطبيق"

تعطيل بسيط لمضادات الفيروسات أو جدار الحماية لا مساعدة!

نصائح أخرى

ربما nitpicking وربما مجرد typ-o ولكن في بعض الأحيان يمكن أن تدفعنا الأشياء الأكثر سخونة.

بيانك: "لقد بدأ Raven.Server ومرتفع إلى الميناء 8082. أقوم بتهيئة مخزن البيانات بالطريقة التالية: "

يقرأ مثال الرمز الخاص بك: "var store = new documentStore () {url =" http: // localhost:8022" };"

المنفذ في عنوانك هو 8082 والمنفذ في مثالك هو 8022.

أدرك أن Typ-O قد لا يكون في الكود الفعلي الخاص بك ولكن لا يؤلمني أبدًا.

'm jus' sayin '

ص

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top