بارگذاری تست برای API با معیار Apache در ویندوز
پیشنهاد ویژه
اگر دنبال بهترین سایت برای اعزام دانشجو و مهاجرت به ترکیه با مجوز رسمی می گردی بزن رو دکمه پایین
من اخیراً نیاز به انجام آزمایش بار روی برخی از نقاط پایانی که برای پروژه ای در سیستم عامل ویندوز خود ایجاد کرده بودم، داشتم. راهاندازی این بخشی از یک کار دشوار بود زیرا بیشتر آموزشها روی یک دستگاه اوبونتو انجام میشد.
تست بار چیست؟
Load Testing نوعی تست عملکرد است که به شما بینشی در مورد نحوه واکنش برنامه وب یا سرور HTTP شما زمانی که تقاضای بیشتری روی آن اعمال می شود، می دهد.
برای این مقاله، ما بر روی آزمایش سرور HTTP با استفاده از Apache Benchmark در سیستم عامل ویندوز تمرکز خواهیم کرد.
الزامات
نصب بنچمارک آپاچی
آخرین نسخه Apache Benchmark برای ویندوز را می توانید در اینجا نصب کنید
حرکت به داخل Apache24/bin
دایرکتوری و هر دو را کپی کنید ab
و abs
فایل های اجرایی در فهرست پروژه شما (اختیاری).
ایجاد یک درخواست GET به سرور ما
دستور زیر را در ترمینال خود، در دایرکتوری که در آن قرار دارید اجرا کنید ab
و abs
فایل های اجرایی قرار دارند:
./ab -c 10 -n 20 http://localhost:8080/
-c
همزمانی
این نشان دهنده تعداد درخواست های متعدد در یک زمان است. برای این تست، ما در حال ارسال 10 درخواست به سرور خود به طور همزمان هستیم.-n
درخواست
این نشان دهنده تعداد درخواست هایی است که باید انجام شود.
بیشتر از این پرچم ها و توضیحات مربوط به آن را می توان در سایت Apache Benchmark یافت
برای این تست، پاسخ مورد انتظار ما در زیر آمده است.
this is ApacheBench, Version 2.3 <$Revision: 1903618 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking localhost (be patient).....done
Server Software:
Server Hostname: localhost
Server Port: 8080
Document Path: /
Document Length: 23 bytes
Concurrency Level: 10
Time taken for tests: 0.033 seconds
Complete requests: 20
Failed requests: 0
Total transferred: 19240 bytes
HTML transferred: 460 bytes
Requests per second: 606.58 [#/sec] (mean)
Time per request: 16.486 [ms] (mean)
Time per request: 1.649 [ms] (mean, across all concurrent requests)
Transfer rate: 569.85 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.4 0 1
Processing: 3 12 3.9 13 18
Waiting: 2 10 4.0 10 17
Total: 3 13 3.8 13 18
Percentage of the requests served within a certain time (ms)
50% 13
66% 15
75% 16
80% 17
90% 17
95% 18
98% 18
99% 18
100% 18 (longest request)
این یک بینش دقیق در مورد نحوه عملکرد سرور ما هنگام ارسال 10 درخواست همزمان ارائه می دهد. مدت زمان مورد نیاز برای پردازش درصد معینی از درخواست های ما را نشان می دهد و تجزیه و تحلیل عمیقی از عملکرد سرور ما ارائه می دهد.
ایجاد یک درخواست POST به سرور ما با استفاده از Apache Benchmark
هنگام ایجاد یک درخواست POST که به بدنه درخواست نیاز دارد، باید داده ها را به درخواست بنچمارک خود منتقل کنیم. این کار با ایجاد a انجام می شود .txt
فایلی که باید حاوی اطلاعات بدن درخواست ما باشد. فایل باید در همان مکان ما باشد ab
و abs
فایل های اجرایی
برای این تست، یک را ایجاد کردم post.txt
فایلی که حاوی یک شی JSON است که بدنه درخواست ما را نشان می دهد.
متن درخواست باید در یک خط و بدون فضای انتهایی اضافی باشد.
نکته: برای قرار دادن داده ها در یک خط در VS Code، کل محتوا را انتخاب کرده و از این دستور استفاده کنید CTRL + SHIFT + J
.
به اجرای خط فرمان زیر در ترمینال خود ادامه دهید.
./ab -p post.txt -T application/json -c 5 -n 5 http://localhost:8080/v1/product
-p
ارسال فایل
این نشان می دهد که فایل حاوی داده های POST است.-t
نوع محتوا
هدر نوع محتوا برای استفاده برای داده های POST/PUT، به عنوان مثال. application/x-www-form-urlencoded. پیش فرض متن/ساده است.
برای تست سروری که نیاز به هدر احراز هویت با معیار Apache دارد، می توان از دستور زیر استفاده کرد:
ab -p post.txt -T application/json -H 'Authorization: Token abcdbdhbuhfrhv' -c 10 -n 200 http://localhost:8080/v1/product
-
-H
هدر سفارشی – این هدر اضافی به درخواست اضافه می کند. آرگومان معمولاً به شکل یک خط سرصفحه معتبر است که حاوی یک جفت مقدار فیلد جدا شده با کولون است (به عنوان مثال، “Accept-Encoding: zip/zop; 8bit”).
توجه: Apache Bench صرف نظر از سطح همزمانی (مشخص شده با پرچم -c) فقط از یک رشته سیستم عامل استفاده می کند. بنابراین، هنگام محک زدن سرورهای با ظرفیت بالا، یک نمونه از Apache Bench می تواند یک گلوگاه باشد. برای اشباع کامل URL هدف، از نمونه های اضافی Apache Bench به صورت موازی استفاده کنید (اگر سرور شما دارای چندین هسته پردازنده است).
فراموش نکنید که لایک کنید، به اشتراک بگذارید و اگر این را مفید دیدید به من اطلاع دهید.