如何在Apache Bench中指定URL查询字符串

14
我的Rails应用运行在Thin服务器上,我想使用ApacheBench进行基准测试。
我使用的命令是:
ab -n 1 -c 1 http://localhost:3001/welcome/search?query="doctor"&rad=5

但是这个轻量级服务器没有处理这个 url,它返回了

!! Invalid Request

有人可以帮助我如何提供URL,以便Thin接受带有查询字符串的URL吗?

3个回答

30

Apache压力测试工具无法从URL中解析出"localhost"。 将其更改为0.0.0.0或127.0.0.1,并引用整个URL以避免与"&"符号的问题。 例如:

ab -n 1 -c 1 "http://0.0.0.0:3001/welcome/search?query=doctor&rad=5"

5

您的查询字符串未正确编码。请删除双引号。如果需要使用,请按以下方式发送:

ab -n 1 -c 1 http://localhost:3001/welcome/search?query=%22doctor%22&rad=5

2
& 被解释为 shell 参数。您可以将整个 URL 放在引号中,它就会起作用:ab -n 1 -c 1 "http://localhost:3001/welcome/search?query=%22doctor%22&rad=5" - Tomas Markauskas
1
显然这在ApacheBench2中不起作用。我正在尝试以下操作: ab2 -n 8000 -c 100 "http://xxx.xx.xxx.xx:8000?jsonp=callbackFunction&articeUrl=http%3A%2F%2Fwww.cnn.com%2F2010%2FCRIME%2F08%2F30%2Fclemens.case%2Findex.html%2F"出现“无效的URL”错误! - IgorGanapolsky
正如指出的那样,问题在于“&”符号,另一个答案(在URL周围使用双引号)是有效的。 - Benja

3

尽管这一行代码可以正常工作,但对我来说却无法工作:

ab -n 1 -c 1 -B 127.0.0.1 "http://localhost:3001/some/stuff"

注意大小写!


太棒了!非常感谢。 - Alexander

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