| SIEGE(1) | Siege Load Tester | SIEGE(1) |
siege - ابزار تست بار و سنجش کارایی HTTP/FTP
خلاصه دستور (SYNOPSIS)
siege [options] siege [options] <URL> siege [options] -g <URL> siege [options] -f urls.txt
توضیحات (DESCRIPTION)
siege یک ابزار چندنخی (multi-threaded) برای تست بار و سنجش کارایی (benchmarking) پروتکلهای HTTP/FTP است. این ابزار از بیشتر قابلیتهای شرحدادهشده در RFC 2616 (HTTP) و RFC 959 (FTP) پشتیبانی میکند. ویژگیها را میتوان هم از طریق خط فرمان و هم در یک فایل پیکربندی تنظیم کرد. هنگامی که یک ویژگی در هر دو مکان تنظیم شده باشد، خط فرمان اولویت دارد.
فایل پیکربندی پیشفرض $HOME/.siege/siege.conf است. اگر دایرکتوری $HOME/.siege و فایلهای siege.conf و cookies.txt را ندارید، siege هنگام اجرا یک دایرکتوری پیکربندی جدید ایجاد خواهد کرد. شما همچنین میتوانید دایرکتوری پیکربندی خود را با دستور siege.config ایجاد کنید.
گزینهها (OPTIONS)
نحو گزینهها (Option Syntax)
siege از
گزینههای
کوتاه و
بلند
پشتیبانی
میکند.
گزینههای
کوتاه به
این صورت
هستند:
-c 25
-c25
گزینههای
بلند به این
صورت هستند:
--concurrent=25
مقادیر گزینهها (Option Values)
- -V, --version
- نسخه انتشار siege و اطلاعات کپیرایت را نمایش میدهد.
- -h, --help
- پیام راهنمایی شامل توصیف گزینههای خط فرمان siege را چاپ میکند.
- -C, --config
- خلاصهای با جزئیات از تمام گزینههای پیکربندیشده فعلی را چاپ میکند که بیشتر آنها در $HOME/.siege/siege.conf تنظیم شدهاند.
- -v, --verbose
- این دستور
siege را در
حالت پرحرف
(verbose) قرار
میدهد که
در واقع
تنظیمات
پیشفرض
است. این
گزینه خط
فرمان
زمانی
کاربرد
دارد که در
فایل
پیکربندی
مقدار 'verbose = false'
تعیین شده
باشد و به
شما امکان
میدهد آن
را
بازنویسی
(override) کنید.
بهطور پیشفرض، خروجی پرحرف siege با کدگذاری رنگی نمایش داده میشود:
* کدهای HTTP 2xx به رنگ آبی
* کدهای HTTP 3xx به رنگ فیروزهای (cyan)
* کدهای HTTP 4xx به رنگ ارغوانی (magenta)
* کدهای HTTP 5xx به رنگ قرمز
* پاسخهای ذخیرهشده در حافظه پنهان HTTP به رنگ سیاهنکته: میتوانید رنگ را در siege.conf به این صورت غیرفعال کنید: 'color = off'
- -q, --quiet
- این دستور
siege را
بیصدا
میکند. این
گزینه
بیشتر در
اسکریپتها
استفاده
میشود و
اغلب همراه
با -g/--get به کار
میرود.
میتوانید
موفقیت یا
عدم موفقیت
اجرا را از
طریق وضعیت
خروج (exit code) آن
بررسی کنید.
siege --quiet -g www.joedog.org if [ $? -eq 0 ] ; then echo "Success" else echo "Failure" fi
- -g URL, --get=URL
- این گزینه
به شما
اجازه
میدهد یک URL
را درخواست
کرده و
تبادل
سرایندها (headers)
را مشاهده
کنید. یک
دستور
متناظر نیز
در فایل
پیکربندی
وجود دارد
که به شما
امکان
میدهد متد
درخواست را
برای این
درخواستها
تعیین کنید:
gmethod = HEAD|GET
$ siege -g "https://www.joedog.org" HEAD / HTTP/1.0 Host: www.joedog.org Accept: */* User-Agent: Mozilla/5.0 (unknown-x86_64-linux-gnu) Siege/4.0.0-beta5 Connection: close HTTP/1.1 200 OK Server: cloudflare-nginx Date: Tue, 09 Feb 2016 18:18:41 GMT Content-Type: text/html; charset=UTF-8 Connection: close Last-Modified: Wed, 25 Nov 2015 18:46:08 GMT Cache-Control: max-age=3, must-revalidate Expires: Tue, 09 Feb 2016 18:18:44 GMT Vary: Accept-Encoding,Cookie CF-RAY: 27219407eeff084a-IAD
نکته: بهترین شیوه این است که هنگام ارسال URL به siege از خط فرمان، آن را داخل علامت نقلقول قرار دهید.
- -p URL, --print=URL
- این گزینه
مشابه -g / --get
است، اما
صفحهای را
که از سرور
دریافت
کرده است
چاپ میکند.
$ siege -p http://www.joedog.org GET / HTTP/1.0 Host: www.joedog.org Accept: */* User-Agent: Mozilla/5.0 (unknown-x86_64-linux-gnu) Siege/4.0.3rc1 Connection: close HTTP/1.1 301 Moved Permanently Date: Wed, 19 Oct 2016 16:58:13 GMT Content-Type: text/html; charset=iso-8859-1 Location: https://www.joedog.org Server: cloudflare-nginx Connection: close <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>301 Moved Permanently</title> </head><body> <h1>Moved Permanently</h1> <p>The document has moved <a href="https://www.joedog.org">here</a>.</p> <hr> <address>Apache/2.2.31 (Amazon) Server at www.joedog.org Port 80</address> </body></html>
- -c NUM, --concurrent=NUM
- این گزینه
به شما
امکان
میدهد
تعداد
کاربران
همزمان را
تنظیم کنید.
تعداد کل
کاربران از
نظر فنی به
منابع
سیستم شما
محدود است.
نباید تعداد کاربرانی بیشتر از ظرفیت تنظیمشده وبسرور خود تعیین کنید. برای نمونه، در پیکربندی پیشفرض apache حداکثر ۲۵۵ رشته (thread) در نظر گرفته شده است. اگر siege را با -c 1024 اجرا کنید، ۷۶۹ کاربر siege در انتظار پاسخ apache معطل خواهند ماند.
به همین دلیل، پیکربندی پیشفرض siege به ۲۵۵ کاربر محدود شده است. میتوانید این عدد را درون siege.conf افزایش دهید، اما اگر اختلالی پیش آمد، مسئولیتی متوجه ما نخواهد بود.
- -r NUM, --reps=NUM|once
- این گزینه
به هر کاربر
siege میگوید
که چند بار
باید اجرا
شود. مقدار
آن معمولاً
باید عددی
بزرگتر از
صفر باشد،
اما
میتواند
کلمه کلیدی
'once' نیز باشد.
اگر --reps=3 باشد، هر کاربر siege قبل از خروج سه بار اجرا خواهد شد. با این حال، اگر --reps=once باشد، هر کاربر دقیقاً یک بار فایل urls.txt را تا انتها پیمایش و اجرا میکند.
برای اطلاعات بیشتر درباره فایل urls.txt، گزینه -f <file>،--file=<file> را ببینید.
- -t NUMm, --time=NUMm
- این گزینه
مشابه --reps
است، اما به
جای مشخص
کردن تعداد
دفعات
اجرای هر
کاربر، مدت
زمانی را که
هر کاربر
باید اجرا
شود مشخص
میکند.
قالب مقدار به صورت "NUMm" است که در آن "NUM" بیانگر مقدار زمان و پسوند "m" یکی از حروف S، M یا H به ترتیب برای ثانیه، دقیقه و ساعت است. برای اجرای siege به مدت یک ساعت، میتوانید هر یک از ترکیبهای زیر را انتخاب کنید: -t3600S، -t60M، -t1H. این پسوند به بزرگی و کوچکی حروف حساس نیست، اما نباید هیچ فاصلهای بین عدد و حرف پسوند وجود داشته باشد.
- -d NUM, --delay=NUM
- این گزینه
به siege
دستور
میدهد که
بین
درخواست هر
صفحه چقدر
تأخیر
داشته باشد.
مقدار NUM
نمایانگر
تعداد
ثانیهها
بین هر
درخواست
است. این
عدد
میتواند
مقداری
اعشاری
باشد. در
واقع مقدار
پیشفرض
نیم ثانیه
است (--delay=0.5).
زمان تأخیر بین درخواستها در زمان تراکنش (transaction time) محاسبه نمیشود. اگر دو تراکنش ۰٫۱ ثانیهای دارای ۲ ثانیه تأخیر بین خود باشند، میانگین زمان تراکنش آنها ۰٫۱ ثانیه است. این زمان بر روی کل زمان سپریشده (elapsed time) اعمال میشود؛ در این حالت، کل زمان سپریشده ۲٫۲ ثانیه خواهد بود.
نکته: هنگامی که تجزیهگر (parser) فعال است (ببینید: -p/--parser)، هیچ تأخیری بین صفحه و اجزای داخلی آن، یعنی شیوهنامهها، فایلهای جاوااسکریپت و غیره اعمال نمیشود. تأخیر فقط بین درخواستهای کل صفحات اعمال میگردد..IP "-b, --benchmark" 4 این دستور به siege اعلام میکند که به حالت بنچمارک برود. این بدان معناست که هیچ تأخیری بین تکرارها وجود نخواهد داشت.
- -i, --internet
- این گزینه siege را در حالتی که حالت اینترنت (internet mode) نامیده میشود قرار میدهد. این گزینه درخواستها را از فایل urls.txt (ببینید: -f <file> / --file=<file>) به ترتیبی تصادفی ارسال میکند.
- -f FILE, --file=FILE
- این گزینه
به siege اعلام
میکند که
با فهرستی
از URLها در یک
فایل متنی
کار کند. URLها
در هر خط به
صورت مجزا
فهرست
میشوند. بر
خلاف URLهایی
که به عنوان
آرگومان خط
فرمان
ارسال
میشوند،
URLها در این
فایل نباید
داخل
نقلقول
(کوتیشن)
قرار گیرند.
تجزیهکنندهٔ urls.txt در siege از کامنتها و متغیرها پشتیبانی میکند. از آنجا که siege از علامت دلار ($) به عنوان پیشوند برای متغیرهای اسکالر استفاده میکند، باید هر متغیری را که میخواهید به سرور ارسال شود گریزدهی (escape) کنید:
https://$(HOST)/siege/jsoner.php POST {"price": "\$10 per mile"} - -R FILE, --rc=FILE
- این دستور به شما امکان میدهد یک فایل منبع (resource file) جایگزین تعیین کنید. به صورت پیشفرض، فایل siegerc در مسیر $HOME/.siege/siege.conf قرار دارد. با این دستور، میتوانید مقدار پیشفرض را لغو کرده و از یک فایل جایگزین استفاده کنید.
- -L FILE, --log=FILE
- فایل لاگ پیشفرض $prefix/var/log/siege.log است. این دستور به شما اجازه میدهد فایلی جایگزین را برای ثبت وقایع مشخص کنید.
- -m "string", --mark="string"
- این گزینه به شما امکان میدهد پیامی را پیش از ثبت آمار در فایل لاگ بنویسید. این گزینه عموماً برای مشخص کردن و شناسایی اجرای بعدی استفاده میشود. برای نمونه، میتوانید فایل را با پارامترهای خط فرمان خود علامتگذاری کنید تا مشخص شود چه پیکربندی دادههای بعدی را تولید کرده است.
- -H "header: value", --header="Header: value"
- این گزینه به شما اجازه میدهد یک هدر سفارشی در درخواست تنظیم کنید. به طور کلی، این هدر جایگزین هدرهای موجود خواهد شد. هدر Cookie یک مورد استثنا است. اگر -H "Cookie: value" را تنظیم کنید، siege آن کوکی را علاوهبر سایر کوکیها ارسال خواهد کرد.
- -A "string", --agent="string"
- این گزینه
به شما
اجازه
میدهد user-agent
پیشفرض را
با مقداری
سفارشی
بازنویسی
کنید.
siege --agent="JoeDog Jr. in da hizzle"
این هدر را تنظیم خواهد کرد:
User-agent: JoeDog Jr. in da hizzle
همچنین میتوانید User-agent را با گزینهٔ -H/--header در بالا تنظیم کنید.
- -T "text", --content-type="text"
- این میانبر دیگری برای تنظیم هدر است. شما از این گزینه برای بازنویسی هدر پیشفرض Content-type در درخواست استفاده میکنید.
- --no-parser
- تجزیهکنندهٔ HTML را خاموش میکند. هنگامی که siege صفحهای را دانلود میکند، آن را برای یافتن عناصر اضافی صفحه مانند style-sheetها، javascript و تصاویر تجزیه میکند. برای هر عنصری که پیدا کند درخواستهای اضافی ارسال خواهد کرد. با فعال بودن این گزینه، siege پس از دریافت صفحهٔ اصلی متوقف خواهد شد.
- --no-follow
- این دستور به siege اعلام میکند که تغییرمسیرهای (redirects) کد 3xx را دنبال نکند.
قالب نشانی وب (URL FORMAT)
ابزار siege از قالبهای RFC 1738 URL پشتیبانی میکند اما تلاش فراوانی کرده تا میانبرهای پرکاربرد را برای راحتی شما پیادهسازی کند. علاوهبر قالبهای RFC 1738، نرمافزار siege قالب URL اختصاصی خود را نیز برای مشخص کردن متد پروتکل معرفی میکند.
یک RFC 1738 URL به
این صورت
است:
<scheme>://<username>:<password>@<hostname>:<port>/<path>;<params>?<query>#<frag>
یک URL در
siege همراه
با نشانگر
متد بدین
شکل است:
<scheme>://<username>:<password>@<hostname>:<port>/<path>
POST <query>
همچنین
میتوانید
محتوای یک
فایل را با
استفاده از
نویسهٔ
هدایت به
این صورت
ارسال (POST)
کنید:
<scheme>://<username>:<password>@<hostname>:<port>/<path>
POST </home/jeff/haha.txt
در اینجا
دو مثال
همراه با
نشانگر متد
siege آورده
شده است:
http://www.joedog.org POST haha=papa&dada=mama
ftp://ftp.armstrong.com/ PUT </home/jdfulmer/etc/tests/bbc.jpg
نکته: اگر URLها را همراه با نشانگرهای متد در خط فرمان تنظیم میکنید، باید عبارت را داخل نقلقول (کوتیشن) قرار دهید، در غیر این صورت پوسته با آن مانند سه آرگومان مجزا رفتار خواهد کرد. اگر URL در یک فایل urls.txt قرار دارد، نباید آن را درون کوتیشن بگذارید.
همانطور
که در بالا
اشاره شد،
siege تلاش
زیادی
میکند تا
میانبرهای
رایجی را که
در اکثر
پیادهسازیهای
مرورگرها
به آنها
عادت دارید
فراهم سازد.
این ابزار
بخشهای
زیادی از URL
در 1738 را
اختیاری در
نظر
میگیرد. در
این مثال،
بخشهای
درون قلاب
اختیاری
هستند:
[scheme://] host.domain.xxx [:port] [/path/file]
هنگامی که siege نام میزبان را دریافت میکند، URL را با فرضیات پیشفرض میسازد. www.joedog.org تبدیل میشود به http://www.joedog.org:80.SH "فایل URLS.txt (URLS.txt FILE)" از بخش «Option Syntax» در بالا میآموزیم که siege میتواند یک URL را به عنوان آرگومان بپذیرد. دستور siege -c -r2 www.joedog.org صفحه اصلی JoeDog را دو بار درخواست خواهد کرد. اما اگر بخواهید بخشهای بزرگی از وبگاه را هدف بگیرید چه؟ siege به شما امکان میدهد فایلی را با URLها پر کنید تا بتواند در طول این فهرست اجرا شود.
قالب این
فایل به
صورت یک URL در
هر خط است:
https://www.joedog.org
https://www.joedog.org/haha
https://www.joedog.org/haha POST homer=simpson&marge=doestoo
این فایل
همچنین از
کامنتگذاری
به سبک UNIX
پشتیبانی
میکند:
# Comment looks like this
https://www.joedog.org
https://www.joedog.org/haha
https://www.joedog.org/haha POST homer=simpson&marge=doestoo
این فایل از تعریف متغیر و ارجاع به آن به سبک پوسته (shell) پشتیبانی میکند. این قابلیت در صورتی که بخواهید یک آزمون مشابه را روی دو لایه (tier) مختلف یا دو طرح (scheme) متفاوت اجرا کنید، بسیار راحت است:
SCHEME=https HOST=bart.joedog.org $(SCHEME)://$(HOST)/ $(SCHEME)://$(HOST)/haha/ $(SCHEME)://$(HOST)/haha/ POST homer=simpson&marge=doestoo
میتوانید
با استفاده
از گزینه -f/--file
این فایل را
به siege معرفی
کنید:
siege -c1 -r50 -f /home/jeff/urls.txt
آمار عملکرد (PERFORMANCE STATISTICS)
هنگامی که اجرای برنامه کامل شد، siege دادههای عملکرد را از تمام کلاینتهای خود جمعآوری کرده و پس از اجرا آنها را خلاصه میکند. (همچنین میتوانید این اعداد را در وقایع ثبت کنید). خروجی خط فرمان از اسکریپت torture.pl متعلق به لینکلن اشتاین (Lincoln Stein) الگوبرداری شده است:
Transactions: 2000 hits
Availability: 100.00 %
Elapsed time: 58.57 secs
Data transferred: 5.75 MB
Response time: 0.25 secs
Transaction rate: 34.15 trans/sec
Throughput: 0.10 MB/sec
Concurrency: 8.45
Successful transactions: 2000
Failed transactions: 0
Longest transaction: 4.62
Shortest transaction: 0.00
Transactions (تراکنشها)
این عدد نمایانگر تعداد کل درخواستهای HTTP است. در این مثال،
ما ۲۵ کاربر شبیهسازیشده [-c25] را اجرا کردیم و هر کدام ۱۰ بار
[-r10] اجرا شدند. حاصلضرب بیست و پنج در ده برابر ۲۵۰ است،
پس چرا مجموع تراکنشها ۲۰۰۰ است؟ زیرا siege هر درخواست را به
حساب میآورد. این اجرا شامل یک تغییرمسیر META و یک تغییرمسیر 301
بود و صفحه درخواستشده حاوی چندین مؤلفه بود که آنها نیز دریافت
شدند.
Availability (در دسترس بودن)
این درصد اتصالات سوکتی است که با موفقیت توسط سرور مدیریت شدهاند.
این مقدار حاصل تقسیم شکستهای سوکت (شامل اتمام مهلت / timeouts)
بر مجموع تمام تلاشهای اتصال است. این عدد خطاهای سرور در رده 400
و 500 را شامل نمیشود؛ این خطاها در بخش «Failed transactions» در
ادامه ثبت میشوند.
Elapsed time (زمان سپریشده)
مدت زمان کل آزمون siege است. این زمان از لحظه فراخوانی siege
توسط کاربر تا زمانی که آخرین کاربر شبیهسازیشده تراکنشهای خود
را کامل کند، اندازهگیری میشود. همانطور که در بالا نشان داده
شده، تکمیل آزمون 58.57 ثانیه طول کشیده است.
Data transferred (دادههای منتقلشده)
مجموع دادههای منتقلشده به تمام کاربران شبیهسازیشده siege است.
این مقدار شامل اطلاعات سرایند (header) و محتوا است. از آنجا که
این مقدار شامل اطلاعات سرایند است، عدد گزارششده توسط siege از
عدد گزارششده توسط سرور بزرگتر خواهد بود. در حالت اینترنت (internet
mode) که URLهای تصادفی را از یک فایل پیکربندی هدف قرار میدهد،
انتظار میرود این مقدار از اجرایی به اجرای دیگر تغییر کند.
Response time (زمان پاسخدهی)
میانگین زمانی که برای پاسخ دادن به درخواستهای هر کاربر شبیهسازیشده
صرف شده است.
Transaction rate (نرخ تراکنش)
میانگین تعداد تراکنشهایی که سرور در هر ثانیه قادر به مدیریت آنها
بوده است؛ به طور خلاصه: تعداد کل تراکنشها تقسیم بر زمان سپریشده.
Throughput (توان عملیاتی)
میانگین تعداد بایتهای منتقلشده در هر ثانیه از سرور به تمام کاربران
شبیهسازیشده.
Concurrency (همزمانی)
میانگین تعداد اتصالات همزمان است. این معیار به این صورت محاسبه
میشود: مجموع زمان تمام تراکنشها تقسیم بر زمان سپریشده (مدت زمانی
که siege اجرا شد).
Successful transactions (تراکنشهای موفق)
تعداد دفعاتی که سرور با یک کد بازگشتی کوچکتر از ۴۰۰ (< 400) پاسخ
داده است.
Failed transactions (تراکنشهای ناموفق)
تعداد دفعاتی که تراکنشهای سوکت با شکست مواجه شدند، که شامل اتمام
مهلت سوکت (socket timeouts) نیز میشود.
Longest transaction (طولانیترین تراکنش)
بیشترین مدت زمانی که یک تراکنش منفرد در میان تمام تراکنشها به خود
اختصاص داده است.
Shortest transaction (کوتاهترین تراکنش)
کمترین مدت زمانی که یک تراکنش منفرد در میان تمام تراکنشها به خود
اختصاص داده است.
Jeffrey Fulmer, et al. <jeff@joedog.org> نویسنده اصلی siege است. افراد پرشماری
در سراسر جهان نیز در این برنامه مشارکت داشتهاند. مشارکتهای آنان
در ChangeLog کد منبع ثبت شده است.
کپیرایت و تکثیر (COPYRIGHT)
حق نشر متعلق به Jeffrey Fulmer, et al. <jeff@joedog.org>
این برنامه یک نرمافزار آزاد است؛ شما میتوانید آن را تحت شرایط «پروانه عمومی همگانی گنو» (GNU General Public License) که توسط بنیاد نرمافزارهای آزاد منتشر شده است، بازتوزیع کرده یا تغییر دهید؛ چه نسخهٔ ۲ پروانه، یا (به انتخاب خودتان) هر نسخهٔ بعدی دیگر.
این برنامه با این امید توزیع شده است که مفید واقع شود، اما بدون هرگونه ضمانت؛ حتی بدون ضمانت ضمنی قابلیت فروش یا تناسب برای یک هدف خاص. برای جزئیات بیشتر به GNU General Public License مراجعه کنید.
شما باید به همراه این برنامه یک نسخه از GNU General Public License را دریافت کرده باشید؛ در غیر این صورت، با بنیاد نرمافزارهای آزاد مکاتبه کنید: Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
دسترسپذیری (AVAILABILITY)
جدیدترین
نسخهٔ
منتشرشده
از siege از
طریق
بارگیری HTTP
در دسترس
است:
http://download.joedog.org/pub/siege
همچنین ببینید (SEE ALSO)
| 2024-11-14 | JoeDog |