مقدمه
Apache Bench که معمولاً به اختصار ab نامیده می شود، یک ابزار خط فرمان تک رشته ای است که توسط پروژه سرور Apache HTTP ارائه شده است. این برنامه برای انجام معیارها در سرور پروتکل انتقال ابرمتن آپاچی (HTTP) شما طراحی شده است. Apache Bench با شبیهسازی درخواستهای متعدد به یک سرور، اندازهگیری میکند که سرور شما چقدر میتواند بارگذاری را مدیریت کند. این به عنوان تست استرس یا تست بار شناخته می شود. این شبیه تمرین آتشسوزی برای وبسایت شما است، و تضمین میکند که وقتی ترافیک واقعی اتفاق میافتد، سرور شما میتواند هجوم را کنترل کند.
اهمیت محک زدن
تصور کنید ماشینی را بدون سرعت سنج، سرعت سنج یا نشانگر سوخت رانندگی کنید. در تاریکی خواهید بود که چقدر سریع می روید، موتور چقدر سخت کار می کند و چقدر بنزین باقی مانده است. بنچمارک کردن وب سایت شما شبیه به استفاده از این ابزار است. خوانش های عملکردی حیاتی را برای شما فراهم می کند. به شما کمک می کند درک کنید:
- ظرفیت: تعداد بازدیدکنندگانی که سایت شما می تواند قبل از کاهش تجربه کاربر داشته باشد، دارد.
- پایداری: نحوه عملکرد سیستم شما در سطوح مختلف ترافیک، به خصوص افزایش ناگهانی غیرمنتظره.
- تنگناها: کدام بخش از سیستم شما (به عنوان مثال، پایگاه داده، نرم افزار سرور، شبکه) عملکرد را محدود می کند.
محک زدن منظم فقط به دنبال همگام شدن با اعداد نیست. این در مورد اطمینان از اینکه وب سایت شما در دسترس، قابل اعتماد و سریع باقی می ماند، حتی تحت سخت ترین شرایط است. با انجام این کار، نه تنها کاربران فعلی خود را راضی نگه می دارید، بلکه با افزایش تعداد کاربران خود، با اطمینان مقیاس می کنید.
مرحله 1 – نصب Apache Bench
قبل از شروع بنچمارک، باید مطمئن شویم که Apache Bench (ab) روی سیستم شما نصب شده است. Apache Bench معمولاً همراه با سرور HTTP Apache ارائه می شود، اما اگر از Apache به عنوان وب سرور خود استفاده نمی کنید، می توان آن را به طور جداگانه نصب کرد. در اینجا نحوه نصب Apache Bench بر روی سیستم عامل های مختلف آورده شده است:
- توزیع های مبتنی بر دبیان (اوبونتو، دبیان) Apache Bench بخشی از بسته apache2-utils است. برای نصب آن، ترمینال خود را باز کرده و دستور زیر را اجرا کنید:
sudo apt-get update
sudo apt-get install apache2-utils
- توزیع های مبتنی بر Red Hat (Fedora، CentOS) در سیستم های مبتنی بر Red Hat، می توانید از yum یا dnf (در فدورا) برای نصب Apache Bench به شرح زیر استفاده کنید:
sudo yum install httpd-tools
- یا اگر از dnf استفاده می کنید:
sudo dnf install httpd-tools
- Arch Linux برای کاربران 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) و سرور آزمایشی را در نظر بگیرید. تأخیر بالا می تواند بر دقت زمان اتصال تأثیر بگذارد.
- نظارت بر منابع
منابع سرور: نظارت بر منابع سرور (CPU، حافظه، ورودی/خروجی دیسک، ورودی/خروجی شبکه) را برای شناسایی تنگناهای احتمالی در طول آزمایش تنظیم کنید.
عملکرد پایه: عملکرد پایه سرور را بدون بارگذاری ثبت کنید. این به شما یک نقطه مقایسه برای نتایج محک زدن شما می دهد.
مرحله 3 – شناسایی اهداف معیار
اهداف واضح به هدایت فرآیند محک زدن شما کمک می کند و شما را قادر می سازد نتایج را به طور موثر تفسیر کنید. برای نمونه:
- حداکثر کاربران همزمان: حداکثر تعداد کاربرانی را که سرور شما میتواند بهطور همزمان بدون کاهش عملکرد قابلتوجه داشته باشد، تعیین کنید.
- زمان پاسخ: زمان پاسخ قابل قبولی را برای برنامه وب خود تحت شرایط بارگذاری مختلف تعیین کنید.
- توان عملیاتی: در مورد توان عملیاتی (درخواست در ثانیه) که سرور شما باید پشتیبانی کند، تصمیم بگیرید.
- اوج ترافیک: برنامه ریزی کنید تا سناریوهای اوج ترافیک را آزمایش کنید تا مطمئن شوید وب سرور شما می تواند بارهای زیادی را تحمل کند.
مرحله 4 – درک معیارهای معیار
Apache Bench معیارهایی را ارائه می دهد که عملکرد وب سرور شما را کمیت می کند. در اینجا به تفکیک برخی از معیارهای کلیدی که با آنها برخورد خواهید کرد آورده شده است:
- درخواست در ثانیه (Throughput): تعداد درخواست هایی که سرور شما می تواند در هر ثانیه انجام دهد. مقادیر بالاتر نشان دهنده عملکرد بهتر و توانایی سرور برای مدیریت ترافیک بیشتر است.
- زمان در هر درخواست: میانگین زمان صرف شده برای پردازش یک درخواست واحد. مقادیر کمتر نشان دهنده زمان پاسخ سریعتر و سرور پاسخگوتر است.
- درخواست های همزمان: تعداد درخواست هایی که به طور همزمان به سرور ارسال می شود. این معیار به درک میزان عملکرد سرور تحت بار همزمان کمک می کند.
- نرخ انتقال: میزان انتقال داده در ثانیه در طول آزمایش. ظرفیت سرور برای ارائه محتوا را نشان می دهد. برای کاربردهای پهنای باند بسیار مهم است.
- میزان موفقیت/خطا: نسبت درخواست های موفق به پاسخ های خطا (به عنوان مثال، 404، 500). نرخ موفقیت بالا برای رضایت و قابلیت اطمینان کاربر بسیار مهم است.
درک این معیارها به شما کمک می کند تا نتایج را از Apache Bench تفسیر کنید و تعیین کنید که آیا سرور شما اهداف عملکردی را که تعیین کرده اید برآورده می کند یا خیر. به خاطر داشته باشید که این معیارها باید با هم در نظر گرفته شوند، زیرا در مجموع نمایه عملکرد سرور شما را نشان می دهند.
مرحله 5 – اجرای یک آزمون ساده
برای شروع یک پنجره ترمینال را باز کنید. آدرس اینترنتی را که می خواهید معیار قرار دهید انتخاب کنید. این صفحه باید نمایانگر استفاده معمولی باشد. برای مثال، از 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 را نصب کنید، تست های بنچمارک اولیه و پیشرفته را انجام دهید، نتایج را تفسیر کنید و تصمیمات آگاهانه ای برای بهینه سازی عملکرد سرور خود بگیرید. بنچمارک یک فرآیند تکراری است. خود را تشویق کنید که به طور مداوم بر عملکرد وب سایت خود نظارت کنید و پیکربندی های مختلف را آزمایش کنید. در مورد تکنیک ها و ابزارهای بهینه سازی جدید برای تیز نگه داشتن مهارت های خود و اجرای روان وب سایت خود مطلع باشید. به یاد داشته باشید، یک وب سایت با عملکرد خوب، تجربه کاربری بهتری را ارائه می دهد، که می تواند منجر به افزایش رضایت و حفظ کاربر شود. مرزهای عملکرد وب سایت خود را ادامه دهید.