如何在Apache Bench中发送多个查询字符串?

9
3个回答

20

你只需要引用URL来避免 shell 特殊字符被解释。在这种情况下,& 符号导致左侧的文本在尝试运行 superDo 命令时在后台运行。

 ab -n 1 -c 1 'http://localhost:2020/welTo.do?pxtId=3000007937&superDo=jack'

工作正常,但(至少在Windows上)我需要使用双引号(")。 - thaddeusmt
如果你得到了类似于“apr_sockaddr_info_get() for localhost: no such host is known”的信息,那么请使用IP地址127.0.0.1而不是localhost - lubosdz

6

3

您尝试过使用post文件吗?我认为这应该可以解决问题:

ab -n 1 -c 1 -p postfile.txt -T 'application/x-www-form-urlencoded' http://localhost:2020/welTo.do

然后创建一个名为postfile.txt的文本文件,并包含以下内容:

pxtId=3000007937&superDo=jack

例子改编自这里


嘿,有没有可能在命令本身中指定发布数据,而不是像curl一样只能通过文件指定? - David Okwii
根据文档显示,这个选项不可用,但是你可以创建一个命名管道并从中读取,这与存储内容在文件中几乎相同。有什么原因你不能使用传统文件吗? - Purefan
在命令中指定参数尤其是当它们很少时更加方便。由于 curl 和其他工具都可以这样做,我期望 ab 也能这样做。否则我不太确定如何“创建一个命名管道并从中读取”。 - David Okwii
@DavidOkwii 这篇文章解释得很好 https://dev59.com/lW855IYBdhLWcg3w1oLa#6675168 - Purefan

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