如何在Apache基准测试工具中限制每秒请求次数

19

我正在尝试对我的Spring Boot应用进行压力测试,但是当我运行以下命令时,ab试图给出应用程序能够承受的最大结果。但是我需要检查应用程序是否能够以每秒特定请求数量进行承载。

ab -p req.json -T application/json -k -c 1000 -n 500000 http://myapp.com/customerTrack/v1/send

上面命令给出的每秒请求数是4000,但实际上,我的应用程序中有很多记录被缓冲,这意味着它无法承载那么多的RPS。请问有人能告诉我如何在ab工具中设置特定的每秒请求次数吗?谢谢!
2个回答

14

我认为你无法从ab中得到你想要的东西。市面上有很多其他工具。

这里有一个简单的工具,可能正好符合你的需求。

https://github.com/rakyll/hey

如果要限制速率为每秒100个请求,则下面的命令应该可以使用。

hey -D req.json -T application/json -c 1000 -q 100 -n 500000 http://myapp.com/customerTrack/v1/send


从文档中得知:"-q 每个工作进程的每秒查询限制(QPS)速率限制","-c 并发运行的工作进程数"。因此,这个答案中的命令使用1000个工作进程,每个工作进程有100 QPS,总共达到了100000 RPS。我怀疑这不是大多数人想要的。 :) 最好的策略可能是将并发级别设置为所需的RPS,并将速率限制设置为每个工作进程每秒1个请求。例如,对于500 RPS,使用"-c 500 -q 1"。 - Ruslan Stelmachenko

3

Apache Bench是单线程程序,只能利用客户端机器上的一个处理器。在极端条件下,如果测试参数超过工具所运行的环境的能力,该工具可能会误报结果。根据您的描述,rps已经达到了硬件限制。

我的应用程序缓冲了很多记录,这意味着它无法承载那么多rps

在单台计算机上控制每秒请求数非常困难。 您可以从HTTP(S)基准测试工具中找到更好的性能测试工具。

如果您有预算,可以尝试goad,这是一个由AWS Lambda驱动的高度分布式负载测试工具,使用Go构建,用于2016年Gopher Gala。 Goad允许您从世界各地进行网站负载测试,同时通过同时在多个地区使用AWS Lambda的方式,仅花费您一些小数点后的几美分。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接