大神用Node.js写的http服务性能测试工具:autocannon

image-20201122041849515

背景简介

A HTTP/1.1 benchmarking tool written in node, greatly inspired by wrk and wrk2, with support for HTTP pipelining and HTTPS. On my box, autocannon can produce more load than wrk and wrk2.

Github: https://github.com/mcollina/autocannon

感兴趣的同学可以详细了解!

常用参数

- c / NUM -连接
要使用的并发连接数。默认值:10。
- p /全国矿工工会——流水线
要使用的流水线请求的数量。默认值:1。
- d /——持续秒
自动加农炮运行的秒数。默认值:10。

例如:autocannon -c 100 -d 5 -p 2 http://10.10.200.xxx:xxx/auth

局限性

Autocannon是用JavaScript编写的,用于Node.js运行时,并且受CPU限制。我们已经验证了wrk使用该http模块对Node.js应用程序进行基准测试时,它可以产生可比的结果。尽管如此,它比编译为二进制文件的其他工具(例如)使用的CPU多得多wrk。自动加农炮会使CPU饱和,例如,自动加农炮进程达到100%:在这种情况下,我们建议使用wrk。

作为示例,让我们考虑在具有4个内核且具有超线程的服务器上以1000个连接运行:

wrk 使用2个线程(默认情况下)和一个辅助线程来收集指标,CPU的总负载为20%+ 20%+ 40%。 autocannon 使用80%CPU负载的单线程。 两者都以大约41k req / sec的速度饱和Node.js进程,但是autocannon由于它是单线程的,因此 可以更快地饱和。

请注意,wrk它不支持HTTP / 1.1流水线。结果,autocannon对于每个打开的连接,与wrk相比,在服务器上产生的负载更多。

这个工具只适合一般的场景测试,复杂的测试应该还是要用wrk2ab等基于静态编译的工具。

(完)