Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up

A high-performance HTTP benchmarking tool that includes a real-time web UI and terminal display

License

NotificationsYou must be signed in to change notification settings

six-ddc/plow

Repository files navigation

buildHomebrewGitHub licensemade-with-Go

Plow is an HTTP(S) benchmarking tool, written in Golang. It usesexcellentfasthttp instead of Go's defaultnet/http due to its lightning fast performance.

Plow runs at a specified connections(option-c) concurrently andreal-time records a summary statistics, histogramof execution time and calculates percentiles to display on Web UI and terminal. It can run for a set duration(option-d), for a fixed number of requests(option-n), or until Ctrl-C interrupted.

The implementation of real-time computing Histograms and Quantiles using stream-based algorithms inspiredbyprometheus with low memory and CPU bounds. so it's almost noadditional performance overhead for benchmarking.

❯ ./plow http://127.0.0.1:8080/hello -c 20Benchmarking http://127.0.0.1:8080/hello using 20 connection(s).@ Real-time charts is listening on http://[::]:18888Summary:  Elapsed        8.6s  Count        969657    2xx        776392    4xx        193265  RPS      112741.713  Reads    10.192MB/s  Writes    6.774MB/sStatistics    Min       Mean     StdDev      Max  Latency     32µs      176µs     37µs     1.839ms  RPS       108558.4  112818.12  2456.63  115949.98Latency Percentile:  P50     P75    P90    P95    P99   P99.9  P99.99  173µs  198µs  222µs  238µs  274µs  352µs  498µsLatency Histogram:  141µs  273028  ■■■■■■■■■■■■■■■■■■■■■■■■  177µs  458955  ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■  209µs  204717  ■■■■■■■■■■■■■■■■■■  235µs   26146  ■■  269µs    6029  ■  320µs     721  403µs      58  524µs       3

Installation

Binary and image distributions are available through thereleasesassets page.

Via Go

go install github.com/six-ddc/plow@latest

Via Homebrew

# brew updatebrew install plow

Via Docker

docker run --rm --net=host ghcr.io/six-ddc/plow# docker run --rm -p 18888:18888 ghcr.io/six-ddc/plow

Usage

Options

usage: plow [<flags>]<url>A high-performance HTTP benchmarking tool with real-time web UI and terminal displayingExamples:  plow http://127.0.0.1:8080/ -c 20 -n 100000  plow https://httpbin.org/post -c 20 -d 5m --body @file.json -T'application/json' -m POSTFlags:      --help                   Show context-sensitive help.  -c, --concurrency=1          Number of connections to run concurrently      --rate=infinity          Number of requests pertime unit, examples: --rate 50 --rate 10/ms  -n, --requests=-1            Number of requests to run  -d, --duration=DURATION      Duration of test, examples: -d 10s -d 3m  -i, --interval=200ms         Print snapshot result every interval, use 0 to print once at the end      --seconds                Use seconds astime unit to print      --json                   Print snapshot result as JSON  -b, --body=BODY              HTTP request body,if start the body with @, the rest should be a filename toread      --stream                 Specify whether to stream file specified by'--body @file' using chunked encoding or toread into memory  -m, --method="GET"           HTTP method  -H, --header=K:V ...         Custom HTTP headers      --host=HOST              Host header  -T, --content=CONTENT        Content-Type header      --cert=CERT              Path to the client's TLS Certificate      --key=KEY                Path to the client's TLS Certificate Private Key  -k, --insecure               Controls whether a client verifies the server's certificate chain and host name      --listen=":18888"        Listen addr to serve Web UI      --timeout=DURATION       Timeout for each http request      --dial-timeout=DURATION  Timeout for dial addr      --req-timeout=DURATION   Timeout for full request writing      --resp-timeout=DURATION  Timeout for full response reading      --socks5=ip:port         Socks5 proxy      --auto-open-browser      Specify whether auto open browser to show Web charts      --[no-]clean             Clean the histogram bar once its finished. Default is true      --summary                Only print the summary without realtime reports      --version                Show application version.  Flags default values also read from env PLOW_SOME_FLAG, such as PLOW_TIMEOUT=5s equals to --timeout=5sArgs:  <url>  request url

Examples

Basic usage:

plow http://127.0.0.1:8080/ -c 20 -n 10000 -d 10s

POST a json file:

plow https://httpbin.org/post -c 20 --body @file.json -T'application/json' -m POST

Bash/ZSH Shell Completion

# Add the statement to their bash_profile (or equivalent):eval"$(plow --completion-script-bash)"# Or for ZSHeval"$(plow --completion-script-zsh)"

Stargazers

Stargazers over time

License

SeeLICENSE.


[8]ページ先頭

©2009-2025 Movatter.jp