apache ab工具使用须知

一般机器上都装有apache ab,顺手拿来压测HTTP服务是我偶尔会干的事情。

但是我也经常被ab困扰,因为它经常会报错,导致我总是怀疑自己的服务有BUG之类,下面简单列举一下ab的几宗罪。

  • ab是单线程的:所以当你发现服务CPU无法打高的时候,一般可以考虑多启几个ab进程,因为ab自己先成为了瓶颈。
  • ab默认是短连接:如果你的linux内核没有特别的优化过tcp参数,那么不用一会ab所在机器的端口就会耗尽,结果就是大量的Failed requests;解决办法就是,如果你的目标是观察服务的逻辑处理性能,那么最好ab携带-k选项,即采用keepalive长连接,绕开短连接的垃圾性能和端口耗尽问题。
  • 记录日志:如果现在仍旧有Failed requests,那么你应该怀疑服务是不是有BUG,观察方式就是让ab输出详细的日志,使用-v4参数即可让ab打印出所有应答,从中找出哪些应答不符合你的预期。
  • Failed Requests中有Length:如果其他几个报错都是0,那么很有可能不是服务有问题,而是你压测的接口输出的应答长度真的在变化,ab就会提示你而已,你还是应该结合日志去分析一下。
  • 并发太高:如果仍旧存在Failed requests(Exceptions、Receive),你应该考虑将-c并发度调低到100~200的样子重复观察,如果在一个并发很低的情况下仍有报错,那么一般来说就是服务逻辑有bug了,否则基本是因为服务端太忙,无法应对这么多的并发连接,导致个别请求被拖延太久从而失败。

就这样,希望对你有帮助。

 

如果文章帮助您解决了工作难题,您可以帮我点击屏幕上的任意广告,或者赞助少量费用来支持我的持续创作,谢谢~