مقدمة
Apache Bench، واختصاره ab، هي أداة سطر أوامر أحادية الخيط مقدمة من مشروع Apache HTTP Server. صُممت هذه الأداة لإجراء اختبارات أداء على خادم Apache Hypertext Transfer Protocol (HTTP). تقيس Apache Bench مدى قدرة خادمك على تحمل الحمل من خلال محاكاة طلبات متعددة موجهة إليه. يُعرف هذا باختبار الإجهاد أو اختبار الحمل. وهو بمثابة تدريب على التعامل مع طوارئ موقعك الإلكتروني، مما يضمن قدرة خادمك على تحمل الضغط الشديد عند حدوثه.
أهمية المقارنة المعيارية
تخيل قيادة سيارة بدون عداد سرعة أو عداد دورات أو مؤشر وقود. ستكون في حيرة من أمرك بشأن سرعتك، أو قوة المحرك، أو كمية الوقود المتبقية لديك. يُشبه تقييم أداء موقعك الإلكتروني استخدام هذه الأداة، حيث تُوفر لك قراءات أداء حيوية، وتساعدك على فهم:
- السعة: عدد الزوار الذين يستطيع موقعك التعامل معهم قبل أن تتدهور تجربة المستخدم.
- الاستقرار: كيفية أداء نظامك تحت مستويات مختلفة من حركة المرور، وخاصة الارتفاعات المفاجئة غير المتوقعة.
- الاختناقات: ما هو الجزء من نظامك (على سبيل المثال، قاعدة البيانات، أو برنامج الخادم، أو الشبكة) الذي يحد من الأداء؟.
لا يقتصر التقييم الدوري على مواكبة الأرقام فحسب، بل يشمل أيضًا ضمان بقاء موقعك الإلكتروني متاحًا وموثوقًا وسريعًا، حتى في ظل أصعب الظروف. وبذلك، لن تحافظ على رضا مستخدميك الحاليين فحسب، بل ستتوسع بثقة مع نمو قاعدة مستخدميك.
الخطوة 1 – تثبيت Apache Bench
قبل البدء باختبار الأداء، يجب التأكد من تثبيت Apache Bench (ab) على نظامك. عادةً ما يأتي Apache Bench مُدمجًا مع خادم Apache HTTP، ولكن يُمكن تثبيته بشكل منفصل إذا لم تكن تستخدم Apache كخادم ويب. إليك كيفية تثبيت Apache Bench على أنظمة تشغيل مختلفة:
- توزيعات ديبيان (أوبونتو، ديبيان): يُعد Apache Bench جزءًا من حزمة apache2-utils. لتثبيته، افتح نافذة الطرفية وشغّل الأمر التالي:
sudo apt-get update sudo apt-get install apache2-utils- في الأنظمة المستندة إلى Red Hat، يمكنك استخدام yum أو dnf (على Fedora) لتثبيت Apache Bench على النحو التالي:
sudo yum install httpd-tools- یا اگر از dnf استفاده می کنید:
sudo dnf install httpd-tools- بالنسبة لمستخدمي Arch Linux، يمكن تثبيت Apache Bench باستخدام pacman:
sudo pacman -S apache-tools- يأتي Apache Bench مثبتًا مسبقًا على العديد من أنظمة macOS. للتحقق من تثبيته، افتح نافذة الأوامر واكتب ab. إذا كان مثبتًا، فستظهر لك معلومات حول استخدام الأمر. إذا لم يكن مثبتًا أو كنت ترغب في التحديث إلى أحدث إصدار، يمكنك تثبيته باستخدام Homebrew:
brew install homebrew/apache/abالخطوة 2 - إعداد بيئة الاختبار
قبل البدء باختبار أداء خادم الويب الخاص بك باستخدام Apache Bench، من الضروري إنشاء بيئة اختبار مُحكمة. هذا يضمن دقة نتائج الاختبار وتناسقها قدر الإمكان.
- اختيار خادم الاختبار
العزلة: اختر بيئة خادم معزولة عن حركة الإنتاج لتجنب التداخل مع المستخدمين الحقيقيين وتحقيق نتائج متسقة.
التكرار: تأكد من أن خادم الاختبار يعكس بيئة الإنتاج بأكبر قدر ممكن من الدقة من حيث تكوين الأجهزة والبرامج والشبكة.
- اعتبارات الشبكة
النطاق الترددي: تأكد من توفر نطاق ترددي كافٍ في شبكتك. قد يؤثر ازدحام الشبكة سلبًا على النتائج.
زمن الوصول: خذ في الاعتبار زمن الوصول بين عميل الاختبار (حيث يعمل Apache Bench) وخادم الاختبار. قد يؤثر زمن الوصول المرتفع على دقة وقت الاتصال.
- مراقبة الموارد
موارد الخادم: إعداد مراقبة موارد الخادم (وحدة المعالجة المركزية، والذاكرة، ومدخلات ومخرجات القرص، ومدخلات ومخرجات الشبكة) لتحديد الاختناقات المحتملة أثناء الاختبار.
أداء خط الأساس: سجّل أداء الخادم الأساسي دون تحميل. هذا يمنحك نقطة مقارنة لنتائجك المعيارية.
الخطوة 3 - تحديد أهداف المعايير
تُساعدك الأهداف الواضحة على توجيه عملية المقارنة المعيارية وتمكينك من تفسير النتائج بفعالية. على سبيل المثال:
- الحد الأقصى للمستخدمين المتزامنين: قم بتعيين الحد الأقصى لعدد المستخدمين الذين يمكن أن يمتلكهم خادمك في وقت واحد دون تقليل الأداء بشكل كبير.
- وقت الاستجابة: حدد وقت استجابة مقبول لتطبيق الويب الخاص بك في ظل ظروف تحميل مختلفة.
- معدل الإنتاجية: حدد معدل الإنتاجية (عدد الطلبات في الثانية) الذي يجب أن يدعمه الخادم الخاص بك.
- ذروة حركة المرور: خطط لاختبار سيناريوهات ذروة حركة المرور للتأكد من قدرة خادم الويب الخاص بك على التعامل مع الأحمال العالية.
الخطوة 4 - فهم معايير القياس
يوفر Apache Bench معايير تقييم أداء خادم الويب لديك. إليك تفصيل لبعض المقاييس الرئيسية التي ستواجهها:
- معدل النقل: عدد الطلبات التي يستطيع خادمك معالجتها في الثانية. تشير القيم الأعلى إلى أداء أفضل وقدرة الخادم على التعامل مع حركة مرور أكبر.
- الوقت لكل طلب: متوسط الوقت المستغرق لمعالجة طلب واحد. تشير القيم المنخفضة إلى أوقات استجابة أسرع وخادم أكثر استجابة.
- الطلبات المتزامنة: عدد الطلبات المُرسَلة إلى الخادم في آنٍ واحد. يُساعد هذا المقياس على فهم أداء الخادم تحت الحمل المتزامن.
- معدل النقل: كمية البيانات المنقولة في الثانية أثناء الاختبار. يُشير هذا المعدل إلى قدرة الخادم على توفير المحتوى. وهو بالغ الأهمية للتطبيقات التي تتطلب نطاقًا تردديًا كبيرًا.
- معدل النجاح/الخطأ: نسبة الطلبات الناجحة إلى استجابات الأخطاء (مثل 404، 500). يُعدّ معدل النجاح المرتفع أمرًا بالغ الأهمية لرضا المستخدمين وموثوقيتهم.
سيساعدك فهم هذه المقاييس على تفسير نتائج Apache Bench وتحديد ما إذا كان خادمك يحقق أهداف الأداء التي حددتها. تذكّر أنه يجب النظر إلى هذه المقاييس معًا، لأنها تُقدّم معًا صورةً لأداء خادمك.
الخطوة 5 - إجراء اختبار بسيط
للبدء، افتح نافذة طرفية. حدد عنوان URL الذي تريد اختبار أدائه. يجب أن تمثل هذه الصفحة الاستخدام النموذجي. في هذا المثال، سنستخدم http://example.com. لإجراء اختبار أداء بسيط، أدخل الأمر التالي:
ab -n 100 -c 10 http://example.com/این دستور 100 درخواست را به http://example.com با همزمانی 10 درخواست در یک زمان ارسال می کند. پس از اجرای دستور، Apache Bench تست را اجرا می کند و پس از اتمام یک سری خروجی ارائه می دهد. بسته به تعداد درخواست ها و زمان پاسخگویی سرور، ممکن است چند ثانیه تا چند دقیقه طول بکشد.
مرحله 6 – تجزیه و تحلیل خروجی
پس از پایان تست، Apache Bench نتایج را نمایش می دهد. در اینجا یک نمونه از خروجی کوتاه شده است:
Document Path: /
Document Length: 108 bytes
Concurrency Level: 10
Time taken for tests: 12.905 seconds
Complete requests: 100
Failed requests: 0
Non-2xx responses: 100
Total transferred: 29500 bytes
HTML transferred: 10800 bytes
Requests per second: 7.75 [#/sec] (mean)
Time per request: 1290.527 [ms] (mean)
Time per request: 129.053 [ms] (mean, across all concurrent requests)
Transfer rate: 2.23 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 645 757 109.5 740 1401
Processing: 173 219 205.1 200 2246
Waiting: 172 218 205.1 196 2246
Total: 834 976 227.1 929 2939
Percentage of the requests served within a certain time (ms)
50% 929
66% 973
75% 988
80% 988
90% 1022
95% 1069
98% 1622
99% 2939
100% 2939 (longest request)خروجی Apache Bench چندین معیار کلیدی را ارائه می دهد که به درک عملکرد وب سایت تحت آزمایش کمک می کند.
مرحله 7 – استفاده پیشرفته و بهترین روش ها
تست همزمان
تست همزمان برای درک اینکه چگونه وب سرور شما تحت فشار عمل می کند ضروری است، و شبیه سازی چندین کاربر که به طور همزمان به وب سایت شما دسترسی دارند.
دستور: -c در Apache Bench برای تنظیم سطح همزمانی استفاده می شود. که اینگونه به نظر می رسد:
ab -c <number_of_concurrent_users> http://example.com/
ab -c 100 http://example.com/
نظارت بر منابع سرور: در حین انجام آزمایش، منابع سرور را با استفاده از ابزارهایی مانند top در لینوکس نظارت کنید تا اطمینان حاصل کنید که سرور بیش از حد مالیات دریافت نمی کند.
تست طولانی مدت
آزمایش طولانی مدت شامل اجرای معیار در یک دوره طولانی برای شناسایی نشت حافظه بالقوه یا کاهش عملکرد در طول زمان است.
دستور: از -t برای اجرای تست برای تعداد مشخصی از ثانیه استفاده کنید. این تست را به مدت 10 دقیقه اجرا می کند، به عنوان مثال:
ab -t 600 http://example.com/مثال: الجمع مع التزامن لمحاكاة سيناريو في العالم الحقيقي:
ab -c 100 -t 600 http://example.com/الاختبار باستخدام طرق HTTP المختلفة
مقدمة عن طرق HTTP
- GET: هذه هي الطريقة الافتراضية المستخدمة لاسترداد البيانات من الخادم.
- POST: يستخدم لإرسال البيانات إلى مورد محدد للمعالجة.
كيفية الاختبار باستخدام طريقة POST
- إعداد البيانات للتقديم: قم بإنشاء ملف يحتوي على البيانات التي سيتم تقديمها.
- الأمر: استخدم -p لتحديد ملف البيانات الخاص بك والعلم -T لتعيين نوع المحتوى.
مثال:
ab -p postdata.txt -T application/x-www-form-urlencodedالخطوة 8 - التصرف بناءً على النتيجة
بعد تشغيل Apache Bench، يمكنك تحديد الاختناقات من خلال البحث عن ما يلي:
- القيم العالية لكل طلب: قد يشير هذا إلى بطء المعالجة أو وجود قيود على موارد الخادم.
- عدد الطلبات المنخفض في الثانية: قد يشير هذا إلى أن الخادم الخاص بك غير مُحسَّن للتعامل بفعالية مع أحمال المرور العالية.
- التوزيع الواسع في نسبة الطلبات التي يتم تقديمها في أوقات معينة: إذا استغرقت العديد من الطلبات وقتًا أطول بكثير للتقديم، فقد يشير هذا إلى أداء غير متسق للخادم.
لذا، يمكنك تحسين أداء الخادم. على سبيل المثال:
- تكوين الخادم: اضبط الإعدادات بناءً على الأداء. على سبيل المثال، قد تحتاج إلى تغيير إعدادات مثل KeepAlive أو MaxClients.
- التوسع: حدد ما إذا كان جهاز الخادم الخاص بك قادرًا على التعامل مع ذروة الحمل لديك أو إذا كنت بحاجة إلى التوسع أو التقليص.
- التحسين: تحديد البرامج النصية أو استعلامات قاعدة البيانات ذات الأداء البطيء والتي تحتاج إلى تحسين.
نتيجة
خلال هذا البرنامج التعليمي، تعلمتَ كيفية تثبيت Apache Bench، وإجراء اختبارات قياس الأداء الأساسية والمتقدمة، وتفسير النتائج، واتخاذ قرارات مدروسة لتحسين أداء خادمك. يُعدّ قياس الأداء عملية تكرارية. شجع نفسك على مراقبة أداء موقعك الإلكتروني باستمرار واختبار مختلف الإعدادات. ابقَ على اطلاع بأحدث تقنيات وأدوات التحسين للحفاظ على مهاراتك عالية الأداء وتشغيل موقعك بسلاسة. تذكر أن الموقع الإلكتروني ذو الأداء الجيد يوفر تجربة مستخدم أفضل، مما قد يؤدي إلى زيادة رضا المستخدمين والاحتفاظ بهم. واصل تطوير أداء موقعك الإلكتروني.









