JMeter - سكين اختبار السويسري (الجزء 1)

نتحدث عن JMeter؟ على الأرجح ، إذا كنت في الموضوع ، فقد قرأت بالفعل كل شيء عن هذه الأداة لاختبار التحمل. ولكن لدي شيء لمفاجأة لك. لمدة ثلاث سنوات في QA ، أدركت أن JMeter متعدد الاستخدامات للغاية ويمكن استخدامه لمجموعة متنوعة من الأغراض. على سبيل المثال ، من أجل:

  • البحث عن خطأ بعيد المنال مع سقوط الموقع لبعض المستخدمين ؛
  • الاحترار السريع لذاكرة التخزين المؤقت على الآلاف من صفحات المنتج ؛
  • اختبار خلفية تطبيق الهاتف المحمول ؛
  • إنشاء سجلات 2000 مع بيانات المستخدم في قاعدة بيانات التطبيق في وقت قصير.

إذا كنت مهتما ، مرحبا بكم في القط. اتضح بشكل كبير ، لذلك سأقسم المقال إلى قسمين.

إخلاء المسئولية: لأسباب واضحة ، لا أدرج لقطات من مشاريع حقيقية في المقالة (أو استخرج كل المعلومات الهامة منها). يتم توفير الرسوم التوضيحية لأغراض البحث والتعليم فقط.

تطبيق JMeter الكلاسيكي


JMeter - تطبيق Java الصغير مع واجهة المستخدم الرسومية. للاختبار ، يبدأ بدون واجهة رسومية. وللكتابة نصوص اختبار ، لديه لوحة يمكنك من خلالها فعل أي شيء.

إنشاء برنامج نصي على JMeter
هذه هي الطريقة التي تبدو بها عملية إنشاء البرنامج النصي (هنا حتى كلمة "الكتابة" لا تناسب)

يتم إنشاء "خطة اختبار" شائعة ، حيث تقوم "مجموعة الرسائل" بإلقاء عناصرها الرئيسية في الاختبار: وحدات التحكم في العملية والطلبات (HTTP ، FTP ، إلخ).

بالإضافة إلى ذلك ، هناك عناصر إضافية لإعداد المعلمات. على سبيل المثال ، تسمح لك إعدادات طلب HTTP الافتراضية بتحديد الخادم الرئيسي والرؤوس وتمكين / تعطيل تنزيل الأصول الإضافية (الصور والأنماط والخطوط وما إلى ذلك). من السهل معرفة ذلك. ويمكنك إجراء اختبار على الفور من هذه الواجهة وإلقاء نظرة على النتائج.

يمكن JMeter تسجيل مثل هذه الحالات الاختبار. يتم تشغيله كوكيل على الجهاز المحلي ، وإذا قمت بتكوين مستعرض (أو تطبيق) ، وحرك حركة المرور من خلال هذا الوكيل ، فسيقوم JMeter بتسجيل جميع الطلبات والردود. ومن هذه المجموعة ، يمكنك إعداد نص برمجي للاختبار من شأنه أن يكرر تصرفات المستخدم ، ويقوم بتشغيله في أي مكان ومتى تريد:

كتابة برنامج نصي في JMeter بناءً على تصرفات المستخدم


المشكلة الرئيسية هي كومة ذاكرة جافا نفسها. تقع على السقف ويمكن أن تسقط بـ 50 مؤشرًا من الاختبارات المتزامنة ، حتى على الأجهزة المتطورة.
إذا لم يكن لدى الجهاز طاقة كافية لاختبار الحمل الكامل ، فاتصل بمؤسسة تابعة لجهة خارجية. لقد نشروا بنية تحتية تمثل مجموعة من الخوادم. لقد حصلوا على نفس JMeter. مقابل أجر ، سيقوم هؤلاء الأشخاص بتشغيل البرنامج النصي الخاص بك على أي تحميل. تقدمنا ​​بطلب للحصول على مثل هذه الخدمات في Octoperf و Blazemeter.

هذه هي كرة القدم ، حبيبي: كيف وقعنا حادثة خلل جزئي في الخادم


لقد انخرطنا في تطوير الويب لمدة 18 عامًا (هتافات - يمكنك الآن التدخين والتدخين ومشاهدة جون ويك). كان هناك العديد من العملاء في حياتهم ، ولكن ظهرت أكبر العملاء مؤخرًا. على سبيل المثال ، أنشأنا موقعًا على Sitecore لأحد أندية كرة القدم في الدوري الإنجليزي الممتاز باستخدام نموذج SPW (موقع صفحة واحدة: جميع الصفحات مفتوحة دون إعادة تحميل صفحة المتصفح نفسها). تحت الغطاء ، توجد لوحة الإدارة لإدارة صفحة المطابقة المباشرة. هذا بث نصي عبر الإنترنت للعبة: يتم تحميل الأحداث الرئيسية (الأهداف ، وعمليات الحذف ، والركلات المجانية) تلقائيًا من نظام Opta ، ويتم نشر الصور والتعليقات وعائدات المعجبين من Twitter و Instagram بواسطة أشخاص حيين - مدراء محتوى نادي كرة القدم.

ألاحظ أنه ليس من دون كبرياء: بعد الإصدار ، نشرت وسائل الإعلام البريطانية مقالات تحت عناوين مثل "أخيرًا ، انتهت هيمنة المواقع القديمة لأندية كرة القدم". في ذلك الوقت ، كان لدى معظم الأندية مواقع بالفعل. لكنهم بدوا وكأنهم طوروا في بداية العقد الأول من القرن الماضي ولم يتغيروا منذ ذلك الحين - مع التصميم المقابل و UX.

قبل الإطلاق ، أجرينا اختبار تحميل كامل وتأكدنا من أن كل شيء يعمل كما ينبغي. بدا هيكل الخادم كما يلي:

  1. يذهب الطلب من العميل إلى خادم موازنة التحميل →
  2. يتحقق خادم موازنة التحميل من حالة ثمانية خوادم CD
  3. خادم موازنة التحميل يرسل طلبًا إلى خادم الأقراص المضغوطة الأقل تحميلًا →
  4. يستجيب خادم CD للعميل.

بعد مرور عام على الإطلاق ، وخلال تدفق كبير من المستخدمين إلى الموقع ، اتصل العميل وقال إن الموقع قد توقف:

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

لا تظهر هذه الرسائل من نقطة الصفر ، لذلك أجرينا دراسة: أطلقنا أداة لرصد حالة خوادم Server Density ونظرنا إلى ما يحدث لها أثناء تدفق المستخدمين على الموقع:

عرض سجل تحميل الخادم في Server Density
هناك حمولة ، ولكن جميع خوادم CD تبحث عن نفس الشيء وحتى

سرعان ما كررت القصة نفسها - أبلغ بعض المستخدمين عن موقع مكسور بالكامل. لم يكن هناك نوع من الخطأ أو الصفحة غير موجودة - الخادم ببساطة لم يستجب للطلب. كان من الممكن للقبض على الوضع بمساعدة JMeter.

كان الهدف بسيطًا - قم بتحميل الخوادم الثمانية وشاهد ما يحدث. تم إجراء اختبار الإجهاد عندما كان الفجر يحدث في تشيليابينسك ، وفي لندن كان الليل عميقًا. استخدمنا العديد من الأجهزة في وضع غير واجهة (يسمح لك بتشغيل المزيد من مؤشرات الترابط في نفس الوقت). فتح البرنامج النصي الصفحة الرئيسية إلى ما لا نهاية ، وكان هذا خطأنا الرئيسي.

أسهل اختبار تحميل البرنامج النصي في JMeter لطلب صفحة واحدة في حلقة

لقد قمنا بتنزيل نفس الأصول التي تم تخزينها مؤقتًا بالفعل مئات المرات. لذلك ، خرج الحمل ضئيلة. ثم جاءت الفكرة: على الموقع - عربة وعربة صغيرة من الصفحات مع الأخبار لتواريخ معينة. إذا تقدمت في اثنين من المتغيرات واستبدلتهما في عنوان URL ، فسنحصل دائمًا على صفحة عشوائية (على سبيل المثال - ... url / news / 2016/08/23 /؟ صفحة = 4).

فجأة ، أدركنا أن Server Density لديه بعض "التجانس" المدمج في الرسوم البيانية لتحميل الخادم خلال الفترات الماضية. إذا وصل الحمل على الخادم خلال خمس دقائق إلى 100٪ ، ثم انخفض إلى 0٪ ، وبعد 20-30 ثانية ارتفع إلى 90٪ ، فسيظهر متوسط ​​القيمة لهذه الفترة - حوالي 80-90٪. لذلك ، لم نشهد تعطل خادم حقيقي.

بعد فحص السجلات بالتفصيل أثناء اختبارات الإجهاد ، اكتشفنا أن أحد خوادم الأقراص المضغوطة قد تم إعادة تشغيله عند تحميل بنسبة 100٪ ولم يخبر أي شخص بهذا الأمر (هذه مقدمة انطلاقة).



نظر موازن التحميل فقط في استخدام وحدة المعالجة المركزية لجميع الخوادم. رأى أنه تم تحميل واحد منهم بنسبة 20 ٪ ، والباقي بنسبة 90 ٪ ، وأرسل المستخدم إلى الأول. وكان في إعادة التشغيل وقدم شاشة بيضاء. بالإضافة إلى ذلك ، كشف خادم التوزيع المستخدم إلى ملف تعريف ارتباط وربطه بإحكام مع خادم الخمول. لذلك ، حتى بعد التحديث ، لم يكن الموقع متاحًا. استمتع 7 من أصل 8 مستخدمين في نفس الوقت بالحياة وقالوا إن كل شيء يعمل.

الاستنتاج:


وجدنا أنه يمكن استخدام JMeter لاختبارات الإجهاد وفي نفس الوقت تحليل حالة الخوادم أثناء الاختبار باستخدام أدوات أخرى. لقد نجحنا في "جذب" مشكلة سقوط الموقع بين بعض المستخدمين وحلها عن طريق تصحيح منطق توزيع الحمل وإضافة سيطرة الدولة.

في الجزء التالي ، سأخبرك كيف ، بمساعدة JMeter ، قمنا بإعداد عملية التخزين المؤقت لصفحات المنتج ، واختبرنا تشغيل تطبيق الهاتف المحمول دون التطبيق نفسه وخلقنا 2000 مستخدم في النظام دون الوصول إلى قاعدة البيانات.

Source: https://habr.com/ru/post/ar456928/


All Articles