An HTTP/1.1 benchmarking tool written in node, greatly inspired by wrk and wrk2, with support for HTTP pipelining and HTTPS.
Autocannon is written in JavaScript for the Node.js runtime and it is CPU-bound. We have verified that it yields comparable results with wrk
when benchmarking Node.js applications using the http
module. Nevertheless, it uses significantly more CPU than other tools that compiles to a binary such as wrk
. Autocannon can saturate the CPU, e.g. the autocannon process reaches 100%: in those cases, we recommend using wrk2
.
As an example, let's consider a run with 1000 connections on a server with 4 cores with hyperthreading:
wrk
uses 2 threads (by default) and an auxiliary one to collect the metrics with a total load of the CPU of 20% + 20% + 40%.autocannon
uses a single thread at 80% CPU load.Both saturates a Node.js process at around 41k req/sec, however,autocannon
can saturate sooner because it is single-threaded.
Note that wrk
does not support HTTP/1.1 pipelining. As a result, autocannon
can create more load on the server than wrk for each open connection.