Benchmark پروتکل HTTP با autocannon
autocannon یک نرمافزار لود تست برای HTTP/1.1 است که با زبان Node.js نوشته شده است. اگر قصد دارید عملکرد سرور یا سرویس خود را در برابر تعداد زیادی درخواست....
آموزش Benchmark پروتکل HTTP با autocannon
اگر نمی دانید Benchmark چیست از اینجا مقاله مربوط به آن را مطالعه کنید .
autocannon
یک نرمافزار لود تست برای HTTP/1.1 است که با زبان Node.js نوشته شده است. اگر قصد دارید عملکرد سرور یا سرویس خود را در برابر تعداد زیادی درخواست HTTP موازی بررسی کنید، از autocannon
میتوانید استفاده کنید.
ویژگیهای این نرمافزار عبارتند از:
- پشتیبانی از تعداد زیادی درخواست موازی
- تولید گزارش های مفصل در فرمتهای مختلف
- قابلیت تعریف سرعت و تعداد درخواستها
برای استفاده از autocannon
، باید Node.js را روی سیستم خود نصب کرده و سپس با استفاده از npm
(مدیر بسته Node.js) این نرمافزار را نصب کنید. معمولاً با دستور زیر میتوانید آن را نصب کنید:
npm install -g autocannon
برای شروع Benchmark از دستور زیر استفاده کنید و به جای آدرس استفاده شده در دستور زیر ، آدرس مورد نظر خود را وارد کنید :
autocannon -c 1000 -p 10 -d 30 -m GET http://127.0.0.1:8000/
تحلیل دستور فوق
بگذارید هر یک از پارامترها (فلگها) را بررسی کنیم:
-
-c 1000
: این فلگ نشاندهنده تعداد اتصالات همزمان است. در این مورد،autocannon
سعی میکند 1000 اتصال همزمان به سرور برقرار کند. -
-p 10
: این فلگ تعداد درخواستهای هر اتصال را مشخص میکند. به عبارت دیگر، هر اتصال 10 درخواست به صورت پشتسرهم میفرستد. -
-d 30
: مدت زمان اجرای تست را به ثانیه مشخص میکند. در این مورد، تست برای 30 ثانیه اجرا خواهد شد. -
-m GET
: مشخص میکند که متد HTTP چیست. در این مورد، از متدGET
استفاده میشود. -
http://127.0.0.1:8000/
: این آدرس URL مشخص میکند که تست باید روی کدام سرور و اندپوینت اجرا شود. در این مورد، آدرس محلی127.0.0.1
با پورت8000
استفاده شده است.
بنابراین، این دستور در واقع به autocannon
میگوید که برای مدت 30 ثانیه، با 1000 اتصال همزمان که هر یک 10 درخواست GET
میفرستند، سرور محلی در پورت 8000 را تست کند.
آشنایی با تمامی پارامترهای autocannon
Usage: autocannon [opts] URL
URL is any valid HTTP or HTTPS URL.
If the PORT environment variable is set, the URL can be a path. In that case 'http://localhost:$PORT/path' will be used as the URL.
Available options:
-c/--connections NUM
The number of concurrent connections to use. default: 10.
-p/--pipelining NUM
The number of pipelined requests to use. default: 1.
-d/--duration SEC
The number of seconds to run the autocannon. default: 10.
-a/--amount NUM
The number of requests to make before exiting the benchmark. If set, duration is ignored.
-L NUM
The number of milliseconds to elapse between taking samples. This controls the sample interval, & therefore the total number of samples, which affects statistical analyses. default: 1.
-S/--socketPath
A path to a Unix Domain Socket or a Windows Named Pipe. A URL is still required to send the correct Host header and path.
-w/--workers
Number of worker threads to use to fire requests.
-W/--warmup
Use a warm up interval before starting sampling.
This enables startup processes to finish and traffic to normalize before sampling begins
use -c and -d sub args e.g. `--warmup [ -c 1 -d 3 ]`
--on-port
Start the command listed after -- on the command line. When it starts listening on a port,
start sending requests to that port. A URL is still required to send requests to
the correct path. The hostname can be omitted, `localhost` will be used by default.
-m/--method METHOD
The HTTP method to use. default: 'GET'.
-t/--timeout NUM
The number of seconds before timing out and resetting a connection. default: 10
-T/--title TITLE
The title to place in the results for identification.
-b/--body BODY
The body of the request.
NOTE: This option needs to be used with the '-H/--headers' option in some frameworks
-F/--form FORM
Upload a form (multipart/form-data). The form options can be a JSON string like
'{ "field 1": { "type": "text", "value": "a text value"}, "field 2": { "type": "file", "path": "path to the file" } }'
or a path to a JSON file containing the form options.
When uploading a file the default filename value can be overridden by using the corresponding option:
'{ "field name": { "type": "file", "path": "path to the file", "options": { "filename": "myfilename" } } }'
Passing the filepath to the form can be done by using the corresponding option:
'{ "field name": { "type": "file", "path": "path to the file", "options": { "filepath": "/some/path/myfilename" } } }'
-i/--input FILE
The body of the request. See '-b/body' for more details.
-H/--headers K=V
The request headers.
--har FILE
When provided, Autocannon will use requests from the HAR file.
CAUTION: you have to specify one or more domains using URL option: only the HAR requests to the same domains will be considered.
NOTE: you can still add extra headers with -H/--headers but -m/--method, -F/--form, -i/--input -b/--body will be ignored.
-B/--bailout NUM
The number of failures before initiating a bailout.
-M/--maxConnectionRequests NUM
The max number of requests to make per connection to the server.
-O/--maxOverallRequests NUM
The max number of requests to make overall to the server.
-r/--connectionRate NUM
The max number of requests to make per second from an individual connection.
-R/--overallRate NUM
The max number of requests to make per second from all connections.
connection rate will take precedence if both are set.
NOTE: if using rate limiting and a very large rate is entered which cannot be met,
Autocannon will do as many requests as possible per second. Also, latency data will be corrected to compensate for the effects of the coordinated omission issue. If you are not familiar with the coordinated omission issue, you should probably read [this article](http://highscalability.com/blog/2015/10/5/your-load-generator-is-probably-lying-to-you-take-the-red-pi.html) or watch this [Gil Tene's talk](https://www.youtube.com/watch?v=lJ8ydIuPFeU) on the topic.
-C/--ignoreCoordinatedOmission
Ignore the coordinated omission issue when requests should be sent at a fixed rate using 'connectionRate' or 'overallRate'.
NOTE: it is not recommended to enable this option.
When the request rate cannot be met because the server is too slow, many request latencies might be missing and Autocannon might report a misleading latency distribution.
-D/--reconnectRate NUM
The number of requests to make before resetting a connections connection to the
server.
-n/--no-progress
Don't render the progress bar. default: false.
-l/--latency
Print all the latency data. default: false.
-I/--idReplacement
Enable replacement of [<id>] with a randomly generated ID within the request body. default: false.
-j/--json
Print the output as newline delimited JSON. This will cause the progress bar and results not to be rendered. default: false.
-f/--forever
Run the benchmark forever. Efficiently restarts the benchmark on completion. default: false.
-s/--servername
Server name for the SNI (Server Name Indication) TLS extension. Defaults to the hostname of the URL when it is not an IP address.
-x/--excludeErrorStats
Exclude error statistics (non-2xx HTTP responses) from the final latency and bytes per second averages. default: false.
-E/--expectBody EXPECTED
Ensure the body matches this value. If enabled, mismatches count towards bailout.
Enabling this option will slow down the load testing.
--renderStatusCodes
Print status codes and their respective statistics.
--cert
Path to cert chain in pem format
--key
Path to private key for specified cert in pem format
--ca
Path to trusted ca certificates for the test. This argument accepts both a single file as well as a list of files
--debug
Print connection errors to stderr.
-v/--version
Print the version number.
-h/--help
Print this menu.
دیدگاه های مربوط به این مقاله (برای ارسال دیدگاه در سایت حتما باید عضو باشید و پروفایل کاربری شما تکمیل شده باشد)