之前写过一个 ab测试(Apache bench)yaf,过了这么久早就忘记了。

基本用法

回顾一下 ab测试(指令)的基本用法,ab 属于 Apache 下的一个并发测试工具,一般的测试需要定义并发数(-c)和请求数(-n)两个参数,后面接上访问地址(引号可加可不加):

ab -c 100 -n 1000 "http://test.com/path/to/service/ab"

windows 下将 Apache bin 目录添加到系统变量 path 中,就可以找个命令行测试指令了。

报错问题

  • SSL not compiled in; no https support

这个是用 ab 指令后面去测试 https 访问地址了,https 测试需要用 abs 指令,两者在同一个目录,可以直接替换使用。

  • apr_pollset_poll: The timeout specified has expired (70007)

这个是超时,网上的教程都是加一个 -k 保持连接就能解决。但我测试发现,有的时候可以正常结束,有的时候报错依然在。然后是另外一个 -r 在遇到 socket 接收错误后,不退出测试,加上之后依然会有报错的情况。再有一个 -s 设置最大超时时间,默认 30 s,在加上这个参数之后,尝试设置 60s,但依然报错,之后改成 3600s 测试,然后等了十几分钟也没有结束。所以可以肯定测试的接口最终还是会报错的。

所以最终的一个测试指令:

abs -c 100 -n 1000 -r -k -s 30 https://test.com/path/to/service/ABTest

在遇到第二个报错时,可以适当增加 -s 超时时间。