اگر میخواهید مطمئن شوید که سرور شما میتواند حجم ترافیک مورد انتظار را به خوبی مدیریت کند، Benchmarking یکی از مهمترین کارهایی است که باید انجام دهید. این کار به شما کمک میکند نقاط ضعف سرورتان را شناسایی کنید، تنظیمات آن را بهینه کنید و مطمئن شوید که برنامهتان در شرایط واقعی عملکرد خوبی خواهد داشت. یکی از ابزارهای ساده و قدرتمند برای این کار Oha است.
در این مقاله، با Oha آشنا میشویم، نحوه استفاده از آن را یاد میگیریم و بهترین روشها برای بنچمارکگیری سرور را بررسی میکنیم.
Oha چیست؟
Oha ابزار مدرن و سریع برای Benchmark از سرورهای HTTP است که به زبان برنامهنویسی Rust نوشته شده است. این ابزار طراحی سادهای دارد اما امکانات بسیار قدرتمندی ارائه میدهد. اگر قبلاً با ابزارهایی مثل Apache Bench (ab) یا wrk کار کرده باشید، Oha تجربهای مدرنتر و کارآمدتر در اختیار شما قرار میدهد.
چرا Oha؟
- سرعت بالا: Oha به لطف Rust بسیار سریع و بهینه است.
- شبیهسازی درخواستهای همزمان: میتوانید هزاران درخواست همزمان را شبیهسازی کنید.
- پشتیبانی از درخواستهای سفارشی: انواع متدهای HTTP (مثل GET، POST) و هدرها یا بدنههای سفارشی را پشتیبانی میکند.
- گزارشدهی دقیق: اطلاعات کاملی مثل تعداد درخواستها در ثانیه (RPS یا Request Per Second)، زمان پاسخدهی (Latency) و درصد موفقیت (Success Rate) ارائه میدهد.
- سازگاری بالا: روی سیستمعاملهای لینوکس، ویندوز و macOS قابل اجراست.
- رابط کاربری ساده: استفاده از آن بسیار راحت است و نیاز به تنظیمات پیچیده ندارد.
آموزش نصب بنچمارک Oha
نصب Oha بسیار آسان است برای دانلود فایل باینری آماده به استفاده، میتوانید نسخه آماده Oha را از صفحه Releases در GitHub دانلود کنید. فایل اجرایی مناسب سیستم خود را انتخاب کرده و مستقیماً از آن استفاده کنید.
چگونه با Oha بنچمارک بگیریم؟
برای شروع یک تست ساده، کافیست دستور زیر را اجرا کنید:
oha http://yourserver.com
این دستور به طور پیشفرض برای ۱۰ ثانیه درخواستهایی به آدرس مشخصشده ارسال میکند و گزارشی از عملکرد سرور ارائه میدهد.
سفارشی کردن بنچمارک Oha
Oha گزینههای متعددی برای شخصیسازی تست دارد. برخی از پارامترهای پرکاربرد عبارتند از:
- `-c`: تعداد اتصالات همزمان (Concurrency).
- `-z`: مدت زمان تست (Duration).
- `-m`: متد HTTP (مثل GET یا POST).
- `-H`: افزودن هدرهای سفارشی.
- `--body`: مشخص کردن بدنه درخواست (برای متدهایی مثل POST).
برای مثال:
oha -c 100 -z 30s -m POST -H "Content-Type: application/json" \ --body '{"key": "value"}' http://yourserver.com/api
- ۱۰۰ اتصال همزمان ایجاد میکند (-c 100).
- تست را برای ۳۰ ثانیه اجرا میکند ((-z 30s.
- درخواستهای POST ارسال میکند (-m POST).
- هدر `Content-Type: application/json` اضافه میکند.
- یک بدنه JSON به همراه درخواست ارسال میکند.
تحلیل خروجی بنچمارک Oha
بعد از اجرای تست، گزارشی مشابه زیر دریافت خواهید کرد:
توضیح بخشهای گزارش بدین شرح است.
- Success Rate: درصد درخواستهایی که با موفقیت پردازش شدهاند.
- Requests/Sec: تعداد درخواستهایی که سرور در هر ثانیه پاسخ داده است.
- Total Data: حجم کل دادهای که بین کلاینت و سرور جابهجا شده است
- Average: میانگین مدت زمان پاسخگویی به یک درخواست
استفاده پیشرفته از Oha
تست چندین آدرس
اگر بخواهید چندین URL را همزمان آزمایش کنید، کافیست لیستی از آدرسها را در یک فایل متنی ذخیره کرده و دستور زیر را اجرا کنید:
oha --urls urls.txt
فایل urls.txt باید شامل هر URL در یک خط باشد.
تست HTTPS
Oha به طور کامل از HTTPS پشتیبانی میکند. فقط کافیست آدرس HTTPS خود را وارد کنید:
oha https://yourserver.com
تست طولانی مدت
برای شبیهسازی ترافیک پایدار در بازههای زمانی طولانیتر (مثلاً یک ساعت):
oha -c 500 -z 1h http://yourserver.com
این دستور سرور شما را با ۵۰۰ اتصال همزمان برای یک ساعت آزمایش خواهد کرد.
بهترین روشها برای بنچمارک با Oha
1. آزمایش در محیط کنترلشده
تستها را در محیطی جداگانه انجام دهید تا نتایج تحت تأثیر عوامل خارجی قرار نگیرند.
2. شبیهسازی سناریوهای واقعی
رفتار واقعی کاربران را شبیهسازی کنید؛ مثلاً ترکیبی از متدهای GET و POST استفاده کنید.
3. نظارت بر منابع سرور
هنگام بنچمارک گرفتن، منابع سرور مثل CPU، حافظه و پهنای باند شبکه را با ابزارهایی مثل `htop` یا `vmstat` بررسی کنید.
4. تحلیل تأخیر P90/P99
زمان پاسخدهی برای درصد بالایی از کاربران (مثل P90 یا P99) اهمیت زیادی دارد؛ چراکه این کاربران معمولاً بیشترین تأثیر منفی را حس خواهند کرد.
5. تکرار و بهبود
پس از شناسایی مشکلات، تغییرات لازم را اعمال کرده و دوباره تست بگیرید تا پیشرفتها را بسنجید.
مقایسه Oha با ابزارهای دیگر
Apache Bench (ab) |
wrk |
Oha |
ویژگی |
C |
C |
Rust |
زبان برنامهنویسی |
محدود |
بسیار سریع |
بسیار سریع |
عملکرد |
محدود |
دقیق |
دقیق |
گزارشدهی تأخیر |
متوسط |
متوسط |
بسیار آسان |
سهولت استفاده |
محدود |
دارد |
دارد |
پشتیبانی از هدرها |
Oha نسبت به ابزارهای قدیمیتر مثل Apache Bench تجربهای مدرنتر ارائه میدهد و استفاده از آن بسیار راحتتر است.
Oha ابزاری سریع، قدرتمند و کاربرپسند برای بنچمارک گرفتن از سرورهای HTTP است. این ابزار با ارائه گزارشهای دقیق و امکانات انعطافپذیر، به شما کمک میکند عملکرد سرورتان را ارزیابی کرده و آن را برای شرایط واقعی آماده کنید. حال که مقاله ی آموزش کامل بنچمارک Oha ، تست سرور های Http را مطالعه کردید، می توانید از دیگر مقالات سایت ایوولرن دیدن کنید.