使用wrk HTTP基准测试工具添加多URL参数时遇问题求助
问题原因与解决办法
你碰到的这个问题其实是shell对特殊字符的解析搞的鬼——&在bash、zsh这类常用shell里是个特殊符号,用来把命令放到后台执行。当你直接在命令里写?accountId=2233&applicationName=App1时,shell会把http://localhost:7040/api/features/FeatureA?accountId=2233这部分当成后台任务启动(所以你会看到[1] 121这个后台任务ID),然后把applicationName=App1当成一个单独的命令去执行,这就导致了命令被截断,执行完还会出现[1] + Done的后台任务结束提示。
给你两个简单的解决办法:
用引号包裹整个URL
把URL放在双引号或者单引号里,shell就会把整个URL当成普通字符串,不会解析里面的&。修改后的命令如下:wrk -d10s -t20 -c20 "http://localhost:7040/api/features/FeatureA?accountId=2233&applicationName=App1"如果你的URL里没有单引号,用单引号也完全没问题:
wrk -d10s -t20 -c20 'http://localhost:7040/api/features/FeatureA?accountId=2233&applicationName=App1'转义
&符号
在&前面加个反斜杠\,告诉shell这只是个普通字符,不是后台执行的标记:wrk -d10s -t20 -c20 http://localhost:7040/api/features/FeatureA?accountId=2233\&applicationName=App1
另外提一句:你命令里写的&是HTML里的转义字符,在shell命令里完全不需要用这个,直接用&就行,只要按上面的方法处理它的特殊含义就好。
内容的提问来源于stack exchange,提问作者dawson
相关产品推荐
相关产品推荐

