معايير مفتوحة لاختبار تحميل الخوادم وتطبيقات الويب

هذه مجموعة من الأدوات المساعدة بناءً على توصيات سكان Hacker News و GitHub. تشمل القائمة: الجراد ، Vegeta ، Slow_cooker ، k6 و Siege. يتم استخدامها من قبل المهندسين من DICE و EA و Buoyant ، بالإضافة إلى مطوري Kubernetes و Load Impact. دعنا نتحدث عن هذه الأدوات.


صور - فيكتور فريتاس - Unsplash

Locust.io


أداة لمواقع اختبار الإجهاد. تتم كتابة جميع النصوص في بيثون. تسمح واجهة الويب الخاصة المبنية على Flask بنتائج المراقبة في الوقت الفعلي. مؤلفو الجراد هم مهندسون سويسريون ، من بينهم موظفون في شركات DICE و EA يشاركون في تطوير ألعاب الكمبيوتر ونشرها.

تعتمد الأداة على مفهوم مثير للاهتمام: الجراد ("الجراد") يحاكي سلوك سرب من الحشرات (المستخدمين الظاهريين) ، "الهجوم" على الموقع أثناء الاختبار. يتم تشكيل الطلبات باستخدام مكتبة شبكة لتنظيم الحوسبة المتوازية - gevent . فيما يلي مثال على اختبار بسيط ، يتم تقديمه على الموقع الرسمي للمشروع:

from locust import HttpLocust, TaskSet, task class WebsiteTasks(TaskSet): def on_start(self): self.client.post("/login", { "username": "test_user", "password": "" }) @task def index(self): self.client.get("/") @task def about(self): self.client.get("/about/") class WebsiteUser(HttpLocust): task_set = WebsiteTasks min_wait = 5000 max_wait = 15000 

يستخدم الجراد مكتبة الطلبات. تعمل هذه الوظيفة الإضافية لأدوات Python القياسية على تبسيط العمل باستخدام HTTP و SSL وتجعل الكود أكثر مرئية. بالمناسبة ، يمكن استخدام وثائق الطلبات كورقة غش لإجراء اختبارات تصحيح الأخطاء على الجراد.

إن أداة اختبار الإجهاد هذه موجودة منذ أكثر من سبع سنوات. خلال هذا الوقت ، تشكل مجتمع واسع حوله - على GitHub أكثر من 10 آلاف نجوم . تم استخدام الجراد في تقييم أداء شبكة Battlelog لسلسلة ألعاب Battlefield. تحدث أرمين رونشر ، مؤلف إطار عمل Flask ، عن الأداة.

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

إذا كنت ترغب في التعرف على الجراد بشكل أوثق ، يجب عليك الانتباه إلى وثائق الأداة. يمكنك أيضًا التوصية بأداء Alexei Romanov من Wargaming في Python Meetup. يتحدث عن كيفية كتابة البرامج النصية التي تحاكي سلوك المستخدم.

فيغيتا


Go أداة مساعدة لسطر الأوامر لاختبار خدمات HTTP المكتوبة في Go. يمكن توصيله كمكتبة لإنشاء أدوات اختبار الحمل الخاصة بك. تم تطوير Vegeta بواسطة أحد مؤلفي منصة Sourcegraph مفتوحة المصدر ، وهو محرك لمراجعة وتصفح الكود المصدري المستخدم من قبل Lyft و Uber و Yelp.

يقوم Vegeta بتقييم إمكانيات موارد الشبكة ، "قصف" طلباتهم بتردد محدد. على سبيل المثال ، للتحقق من المضيف المحلي ، ما عليك سوى إدخال الأمر التالي:

 echo "GET http://localhost/" | vegeta attack -duration=5s | tee results.bin | vegeta report 

بشكل افتراضي ، يعمل Vegeta مع دفق قراءة الأوامر القياسي (stdin) ، بحيث يتم إرسال المورد للاختبار من خلال الارتداد. تشير المعلمة المدة إلى مدة الاختبار. سيتم إنشاء التقرير في ملف Results.bin. ينشئ Vegeta تقارير بتنسيق نصي ، ولكنه قادر على رسم الرسوم البيانية . يمكنك إنشاءها باستخدام الأمر التالي:

 vegeta plot -title=Results results.bin > results-plot.html 

تشكل مجتمع كبير حول Vegeta - 12 ألف نجمة على جيثب . وقد استخدم مطورو Kubernetes هذه الأداة لتقييم أداء نظامهم الأساسي - ثم أنتجت Vegeta حوالي 10 مليون طلب في الثانية لمجموعة من آلاف العقد.

الوثائق التي تصف جميع الوظائف والأعلام لاختبارات Vegeta موجودة في المستودع على GitHub . يمكنك أيضا العثور على الملفات القابلة للتنفيذ precompiled هناك.

Slow_cooker


هذه أداة اختبار تحميل الخادم مكتوبة في Go. تم تطويره من قبل مهندسين من Buoyant ، مما ينشئ شبكة خدمة لـ Kubernetes - Linkerd. إنه جزء من Cloud Cloud Computing Foundation ويعتبر منافسًا لـ Google Istio .


صور - جوشوا أراغون - Unsplash

عادةً ما تقوم الأدوات المساعدة لاختبار الحمل بالتحقق من إمكانيات الخادم ، وإرساله بأكبر عدد ممكن من الطلبات في وقت قصير. يقول مؤلفو slow_cooker أن أداتهم تسمح لك بتقييم عمل الحديد في ظل حمولة يمكن التنبؤ بها لفترة طويلة.

يستخدم خبراء الطفو تطويرهم لاختبار Linkerd والخدمات الأخرى ، مثل nginx. الأداة صغيرة جدًا - يبلغ عمرها ثلاثة أعوام تقريبًا - حتى يحصل على مجتمع كبير. لكن الوضع قد يتغير في المستقبل ، على سبيل المثال ، تم تخزين مستودعها بالفعل في Skysanner ، وهي خدمة دولية للبحث عن تذاكر الطيران.

يمكنك العثور على شفرة المصدر على جيثب .

K6


أداة لاختبار التحميل والانحدار للخدمات الميكروية والحاويات والمواقع المستضافة في السحابة. هو مكتوب في Go و بواسطة مطوري JavaScript من Load Impact - هذا تطبيق لاختبار "ثبات" المواقع.

يعتمد العمل مع k6 على كل شيء كنموذج رمز ، عندما يتم كتابة منطق الاختبار وجميع الإعدادات في JavaScript. في البرامج النصية ، يمكن تجميع الخطوات الفردية ، والتي قد تكون مناسبة لأولئك الذين اعتادوا على اتباع مبادئ BDD. فيما يلي مثال على هذه المجموعة:

 import { group } from "k6"; export default function() { group("user flow: returning user", function() { group("visit homepage", function() { // load homepage resources }); group("login", function() { // perform login }); }); }; 

تتيح الأداة أيضًا إمكانية تسجيل البرامج النصية وإنشاء الرسوم البيانية - يتم تنفيذ الوظيفة الأخيرة على InfluxDB و Grafana. ولديه تكامل مع أنظمة CI مثل Jenkins و Circle CI و Team City و GitLab.

يقول المستخدمون أن k6 ليس كثيف الاستخدام للموارد ولديه واجهة برمجة تطبيقات ملائمة. ولكن هناك العديد من العيوب ، على وجه الخصوص ، k6 لا يدعم طبقة الويب ولا يعرف كيفية إجراء الاختبارات على الأنظمة الموزعة. على الرغم من أن مطوري k6 في الخيط الموضوعي على Hacker News قالوا إن هذه الميزات ستظهر في المستقبل.

إذا كنت ترغب في التعرف على إمكانيات k6 بنفسك ، يوصي سكان HN بالبدء في التوثيق الفني - فهو مفصل وأمثلة. إذا كان لديك أي أسئلة ، يمكنك الاتصال بالمنتدى الرسمي .

حصار


يسمح لك Siege بتحميل خوادم الويب للاختبار. تم إنشاء الأداة المساعدة بواسطة المهندس Jeff Fulmer (Jeff Fulmer) ، بحيث يمكن للمطورين التحقق من استهلاك الموارد من التعليمات البرمجية الخاصة بهم في ظروف قريبة من القتال. يحاكي Siege دفقًا مستمرًا من الوصول إلى الموقع من العديد من المستخدمين ، كما لو كان يحمل الخادم "تحت الحصار" - ومن هنا جاء اسم الأداة.

بعد الاختبار ، تُظهر الأداة المساعدة: وقت المسح ، وعدد المعاملات في الثانية الواحدة ، والإنتاجية ، وعدد الطلبات الناجحة وغير الناجحة ، بالإضافة إلى عددها برمز الاستجابة 200. فيما يلي مثال على تقرير تم إنشاؤه بواسطة Siege.

الحصار واسع الانتشار في مجتمع تكنولوجيا المعلومات. على سبيل المثال ، يتم تخصيص قسم كامل في كتاب " NGINX High Performance " لتحميل الاختبار بمساعدته. كما أنها تستخدم من قبل بعض مقدمي السحابة.

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

قراءة إضافية على 1cloud.ru بلوق:

ما هو الجديد في Linux kernel 5.3 - برامج تشغيل الرسومات ، والمحاكاة الافتراضية ، وغيرها من التحديثات
لماذا مطوري المستعرض العادي رفضوا مرة أخرى عرض النطاق الفرعي
لماذا تغيرت متطلبات Apple لمطوري التطبيقات

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


All Articles