.\" XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX .\" DO NOT EDIT! Generated from XML source. .\" XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX .de Sh \" Subsection .br .if t .Sp .ne 5 .PP \fB\\$1\fR .PP .. .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Ip \" List item .br .ie \\n(.$>=3 .ne \\$3 .el .ne 3 .IP "\\$1" \\$2 .. .TH "AB" 1 "2026-04-30" "Apache HTTP Server" "ab" .SH "نام (NAME)" ab \- ابزار سنجش کارایی (بنچمارک) سرور وب Apache HTTP .SH "خلاصه دستور (SYNOPSIS)" .PP \fB\fBab\fR [ -\fBA\fR \fIauth-username\fR:\fIpassword\fR ] [ -\fBb\fR \fIwindowsize\fR ] [ -\fBB\fR \fIlocal-address\fR ] [ -\fBc\fR \fIconcurrency\fR ] [ -\fBC\fR \fIcookie-name\fR=\fIvalue\fR ] [ -\fBd\fR ] [ -\fBe\fR \fIcsv-file\fR ] [ -\fBE\fR \fIclient-certificate file\fR ] [ -\fBf\fR \fIprotocol\fR ] [ -\fBg\fR \fIgnuplot-file\fR ] [ -\fBh\fR ] [ -\fBH\fR \fIcustom-header\fR ] [ -\fBi\fR ] [ -\fBk\fR ] [ -\fBl\fR ] [ -\fBm\fR \fIHTTP-method\fR ] [ -\fBn\fR \fIrequests\fR ] [ -\fBp\fR \fIPOST-file\fR ] [ -\fBP\fR \fIproxy-auth-username\fR:\fIpassword\fR ] [ -\fBq\fR ] [ -\fBr\fR ] [ -\fBs\fR \fItimeout\fR ] [ -\fBS\fR ] [ -\fBt\fR \fItimelimit\fR ] [ -\fBT\fR \fIcontent-type\fR ] [ -\fBu\fR \fIPUT-file\fR ] [ -\fBv\fR \fIverbosity\fR] [ -\fBV\fR ] [ -\fBw\fR ] [ -\fBx\fR \fI-attributes\fR ] [ -\fBX\fR \fIproxy\fR[:\fIport\fR] ] [ -\fBy\fR \fI-attributes\fR ] [ -\fBz\fR \fI
-attributes\fR ] [ -\fBZ\fR \fIciphersuite\fR ] [http[s]://]\fIhostname\fR[:\fIport\fR]/\fIpath\fR\fR .SH "چکیده (SUMMARY)" .PP ابزار \fBab\fR ابزاری برای سنجش کارایی و بارگذاری سرور Apache Hypertext Transfer Protocol (HTTP) شما است.\& این ابزار طوری طراحی شده که دیدی کلی از نحوه عملکرد نصب فعلی آپاچی به شما بدهد.\& این ابزار به ویژه نشان می‌دهد که وب‌سرور آپاچی شما قادر به پاسخگویی به چند درخواست در ثانیه است.\& .SH "گزینه‌ها (OPTIONS)" .TP \fB-A \fIauth-username\fR:\fIpassword\fR\fR ارائه اطلاعات احراز هویت پایه (BASIC Authentication) به سرور.\& نام کاربری و گذرواژه با یک نویسه \fB:\fR از هم جدا شده و به صورت کدگذاری base64 روی شبکه ارسال می‌شوند.\& این رشته بدون در نظر گرفتن اینکه سرور به آن نیاز دارد یا خیر (یعنی کد 401 authentication needed ارسال کرده باشد یا نه) ارسال می‌شود.\& .TP \fB-b \fIwindowsize\fR\fR اندازه بافر ارسال/دریافت TCP بر حسب بایت.\& .TP \fB-B \fIlocal-address\fR\fR نشانی محلی برای اتصال (bind) هنگام برقراری ارتباطات خروجی.\& .TP \fB-c \fIconcurrency\fR\fR تعداد درخواست‌های هم‌زمان در یک لحظه.\& مقدار پیش‌فرض یک درخواست در هر لحظه است.\& .TP \fB-C \fIcookie-name\fR=\fIvalue\fR\fR افزودن یک خط \fBCookie:\fR به درخواست.\& این آرگومان معمولاً در قالب یک جفت \fB\fIname\fR=\fIvalue\fR\fR است.\& این فیلد تکرارپذیر است.\& .TP \fB-d\fR جدول "percentage served within XX [ms] table" را نمایش ندهد (برای سازگاری با نسخه‌های قدیمی).\& .TP \fB-e \fIcsv-file\fR\fR نوشتن یک پرونده با مقادیر جداشده با کاما (CSV) که برای هر درصد (از ۱٪ تا ۱۰۰٪) زمانی را که (بر حسب میلی‌ثانیه) صرف پاسخ به آن درصد از درخواست‌ها شده است، ثبت می‌کند.\& این قالب معمولاً از پرونده 'gnuplot' مفیدتر است زیرا نتایج از قبل دسته‌بندی شده‌اند.\& .TP \fB-E \fIclient-certificate-file\fR\fR هنگام اتصال به وب‌سایت دارای SSL، از گواهی کلاینت ارائه‌شده در قالب PEM برای احراز هویت با سرور استفاده می‌کند.\& انتظار می‌رود پرونده شامل گواهی کلاینت، به همراه گواهی‌های میانی و کلید خصوصی باشد.\& موجود در نسخه 2.4.36 و بالاتر.\& .TP \fB-f \fIprotocol\fR\fR تعیین پروتکل SSL/TLS (شامل SSL2, SSL3, TLS1, TLS1.1, TLS1.2 یا ALL).\& پشتیبانی از TLS1.1 و TLS1.2 در نسخه 2.4.4 و بالاتر موجود است.\& .TP \fB-g \fIgnuplot-file\fR\fR نوشتن تمام مقادیر اندازه‌گیری‌شده در قالب یک پرونده 'gnuplot' یا TSV (مقادیر جداشده با تب).\& این پرونده را می‌توان به راحتی در بسته‌هایی مانند Gnuplot, IDL, Mathematica, Igor یا حتی Excel وارد کرد.\& عناوین در خط اول پرونده قرار دارند.\& .TP \fB-h\fR نمایش اطلاعات نحوه استفاده.\& .TP \fB-H \fIcustom-header\fR\fR الحاق هدرهای اضافی به درخواست.\& این آرگومان معمولاً در قالب یک خط هدر معتبر شامل جفت فیلد-مقدار جداشده با دونقطه است (مثلاً \fB"Accept-Encoding: zip/zop;8bit"\fR).\& .TP \fB-i\fR ارسال درخواست‌های \fBHEAD\fR به جای \fBGET\fR.\& .TP \fB-k\fR فعال‌سازی قابلیت KeepAlive در HTTP، یعنی ارسال چندین درخواست در طول یک نشست HTTP.\& پیش‌فرض بدون KeepAlive است.\& .TP \fB-l\fR اگر طول پاسخ‌ها ثابت نباشد خطایی گزارش ندهد.\& این گزینه می‌تواند برای صفحات پویا مفید باشد.\& موجود در نسخه 2.4.7 و بالاتر.\& .TP \fB-m \fIHTTP-method\fR\fR متد HTTP سفارشی برای درخواست‌ها.\& موجود در نسخه 2.4.10 و بالاتر.\& .TP \fB-n \fIrequests\fR\fR تعداد درخواست‌ها برای اجرای نشست بنچمارک.\& مقدار پیش‌فرض تنها یک درخواست است که معمولاً به نتایج غیرواقعی منجر می‌شود.\& .TP \fB-p \fIPOST-file\fR\fR پرونده حاوی داده‌ها برای ارسال به روش POST.\& به یاد داشته باشید که گزینه \fB-T\fR را نیز تنظیم کنید.\& .TP \fB-P \fIproxy-auth-username\fR:\fIpassword\fR\fR ارائه اطلاعات احراز هویت پایه (BASIC Authentication) به پراکسی در مسیر.\& نام کاربری و گذرواژه با یک \fB:\fR جدا شده و با کدگذاری base64 فرستاده می‌شوند.\& رشته بدون توجه به نیاز پراکسی ارسال می‌شود (مثلاً ارسال کد 407 proxy authentication needed).\& .TP \fB-q\fR هنگام پردازش بیش از ۱۵۰ درخواست، \fBab\fR گزارش پیشرفت را در هر ۱۰٪ یا حدود ۱۰۰ درخواست روی \fBstderr\fR چاپ می‌کند.\& گزینه \fB-q\fR این پیام‌ها را غیرفعال می‌کند.\& .TP \fB-r\fR در صورت بروز خطاهای دریافت سوکت خارج نشود.\& .TP \fB-s \fItimeout\fR\fR حداکثر زمان به ثانیه برای انتظار پیش از منقضی شدن زمان سوکت (timeout).\& پیش‌فرض ۳۰ ثانیه است.\& موجود در نسخه 2.4.4 و بالاتر.\& .TP \fB-S\fR عدم نمایش مقادیر میانه و انحراف معیار، و عدم نمایش پیام‌های هشدار/خطا هنگامی که میانگین و میانه بیش از یک یا دو برابر انحراف معیار تفاوت دارند.\& و استفاده پیش‌فرض از مقادیر min/avg/max (برای سازگاری با نسخه‌های قدیمی).\& .TP \fB-t \fItimelimit\fR\fR حداکثر زمان به ثانیه برای اجرای بنچمارک.\& این گزینه به‌طور ضمنی مقدار \fB-n 50000\fR را در نظر می‌گیرد.\& برای بنچمارک سرور در یک محدوده زمانی ثابت از این گزینه استفاده کنید.\& به‌طور پیش‌فرض محدودیت زمانی وجود ندارد.\& .TP \fB-T \fIcontent-type\fR\fR هدر Content-type برای داده‌های POST/PUT، مانند \fBapplication/x-www-form-urlencoded\fR.\& پیش‌فرض \fBtext/plain\fR است.\& .TP \fB-u \fIPUT-file\fR\fR پرونده حاوی داده‌ها برای ارسال به روش PUT.\& به یاد داشته باشید که گزینه \fB-T\fR را نیز تنظیم کنید.\& .TP \fB-v \fIverbosity\fR\fR تنظیم سطح گزارش جزئیات \- مقدار \fB4\fR و بالاتر اطلاعات هدرها را چاپ می‌کند، \fB3\fR و بالاتر کدهای پاسخ (404, 200 و...) را چاپ می‌کند، و \fB2\fR و بالاتر هشدارها و پیام‌های اطلاعاتی را نمایش می‌دهد.\& .TP \fB-V\fR نمایش شماره نسخه و خروج.\& .TP \fB-w\fR چاپ نتایج در قالب جدول‌های HTML.\& جدول پیش‌فرض دو ستونه با پس‌زمینه سفید است.\& .TP \fB-x \fI-attributes\fR\fR رشته‌ای به عنوان ویژگی‌های تگ \fB
\fR.\& ویژگی‌ها در مکان \fB
\fR درج می‌شوند.\& .TP \fB-X \fIproxy\fR[:\fIport\fR]\fR استفاده از یک سرور پراکسی برای ارسال درخواست‌ها.\& .TP \fB-y \fI-attributes\fR\fR رشته‌ای به عنوان ویژگی‌های تگ \fB\fR.\& .TP \fB-z \fI
-attributes\fR\fR رشته‌ای به عنوان ویژگی‌های تگ \fB\fR.\& .TP \fB-Z \fIciphersuite\fR\fR مشخص کردن سوئیت رمزنگاری SSL/TLS (به openssl ciphers مراجعه کنید).\& .SH "خروجی (OUTPUT)" .PP فهرست زیر مقادیر بازگردانده‌شده توسط \fBab\fR را توضیح می‌دهد: .TP Server Software مقداری که در صورت وجود، در هدر HTTP به نام \fIserver\fR اولین پاسخ موفق بازگردانده شده است.\& این شامل تمام نویسه‌ها از ابتدای هدر تا کاراکتری با مقدار ده‌دهی ۳۲ (فاصله یا خط جدید) است.\& .TP Server Hostname نام DNS یا نشانی IP مشخص‌شده در خط فرمان.\& .TP Server Port پورتی که ab به آن متصل می‌شود.\& اگر پورتی تعیین نشده باشد، پیش‌فرض برای http مقدار 80 و برای https مقدار 443 خواهد بود.\& .TP SSL/TLS Protocol پارامترهای پروتکل توافق‌شده میان کلاینت و سرور.\& تنها در صورت استفاده از SSL نمایش داده می‌شود.\& .TP Document Path مسیر شناسه URI درخواست که از رشته خط فرمان استخراج شده است.\& .TP Document Length اندازه نخستین سند بازگردانده‌شده با موفقیت بر حسب بایت.\& اگر اندازه سند در طول آزمون تغییر کند، پاسخ یک خطا تلقی خواهد شد.\& .TP Concurrency Level تعداد کلاینت‌های هم‌زمان مورد استفاده در طول آزمون.\& .TP Time taken for tests مدت زمان سپری‌شده از لحظه ایجاد اولین اتصال سوکت تا لحظه دریافت آخرین پاسخ.\& .TP Complete requests تعداد پاسخ‌های موفق دریافت شده.\& .TP Failed requests تعداد درخواست‌هایی که ناموفق تلقی شده‌اند.\& اگر این عدد بزرگتر از صفر باشد، خط دیگری چاپ خواهد شد که تعداد درخواست‌های ناموفق ناشی از اتصال، خواندن، طول محتوای نادرست یا استثناها را نشان می‌دهد.\& .TP Write errors تعداد خطاهایی که در حین نوشتن رخ داده‌اند (شکستگی لوله pipe).\& .TP Non-2xx responses تعداد پاسخ‌هایی که در سری کدهای ۲۰۰ نبوده‌اند.\& اگر تمام پاسخ‌ها ۲۰۰ باشند، این فیلد چاپ نمی‌شود.\& .TP Keep-Alive requests تعداد اتصالاتی که به درخواست‌های Keep-Alive منجر شده‌اند.\& .TP Total body sent اگر ارسال داده به عنوان بخشی از آزمون پیکربندی شده باشد، این کل بایت‌های ارسال‌شده در طول آزمون است.\& اگر آزمون فاقد بدنه ارسالی باشد، این فیلد حذف می‌شود.\& .TP Total transferred تعداد کل بایت‌های دریافتی از سرور.\& این عدد در واقع حجم بایت‌های ارسال‌شده روی شبکه است.\& .TP HTML transferred تعداد کل بایت‌های سند که از سرور دریافت شده‌اند.\& این عدد بایت‌های هدر HTTP را شامل نمی‌شود.\& .TP Requests per second تعداد درخواست‌ها در هر ثانیه.\& این مقدار حاصل تقسیم تعداد درخواست‌ها بر کل زمان صرف‌شده است.\& .TP Time per request میانگین زمان صرف‌شده برای هر درخواست.\& مقدار اول با فرمول \fBconcurrency * timetaken * 1000 / done\fR محاسبه می‌شود، در حالی که مقدار دوم با فرمول \fBtimetaken * 1000 / done\fR محاسبه می‌گردد.\& .TP Transfer rate نرخ انتقال که با فرمول \fBtotalread / 1024 / timetaken\fR محاسبه می‌شود.\& .SH "اشکالات (BUGS)" .PP بافرهای مختلفی با طول ثابت به صورت ایستا تعریف شده‌اند.\& همراهی این موضوع با تجزیه ساده‌لوحانه آرگومان‌های خط فرمان، هدرهای پاسخ سرور و سایر ورودی‌های خارجی ممکن است مشکل‌ساز شود.\& .PP این ابزار پروتکل HTTP/1.x را به‌طور کامل پیاده‌سازی نمی‌کند و فقط فرم‌های خاص و 'مورد انتظار' پاسخ‌ها را می‌پذیرد.\& استفاده نسبتاً زیاد از تابع \fBstrstr(3)\fR در صدر پروفایل اجرایی دیده می‌شود که ممکن است نشان‌دهنده افت کارایی باشد؛ به این معنا که شما ممکن است به جای کارایی سرور، کارایی خود برنامه \fBab\fR را اندازه‌گیری کنید.\&