对我们的服务的请求如下所示:
GET http://[SERVICE]/Node:[id].Build?format=mime1,mime2,...,mimeN&template-id=[templateid]
Accept: multipart/mixed
Content-Type: application/json
body: json document我正在尝试使用ApacheBench来测试基准测试。下面是我使用的调用:
ab -n 10 -c 2 -T 'application/json' -H 'Accept: multipart/mixed' 'http://phx5qa01c-02b0.stratus.phx.qa.ebay.com/.Build?format=text/html,text/plain&template-id=29b1468f-c8c3-db23-2f6f-74e112795540'此调用通过,并导致错误,因为预期的json数据不是there.Is的,在ab中有一种方法来随此请求一起提供必要的json。我看到有用于指定输入文件的-p和-u命令,但这些命令用于but和posts。
发布于 2019-09-22 12:04:40
我意识到这个答案晚了六年,但我认为这是值得发表的,因为我在一个与此非常相似的问题上碰壁,当时我试图对一个只返回JSON数据的URL进行负载测试,我的解决方案可能会帮助遇到这个问题的其他读者。我的问题是,当我不需要的时候,我一直在指定-H选项。这使得服务器不断地向我的AB请求发回一个HTTP 406响应码(不能接受)。在我的大部分故障排除过程中,当我不需要-T 'application/json'的时候,我也会把它放在AB请求中。它仅与PUT或POST结合使用(使用-p开关时)。所以我删除了-H和-T,它起作用了。话虽如此,我在这里看到了这两个问题。我们需要注意的是AB默认使用GET方法。
-H 'Accept: multipart/mixed',这可能会使目标服务器认为这是一个无效的请求,并立即停止序列。除非你有一个非常好的理由,否则不要使用-H。-T 'application/json',该选项仅在您将其与-p一起指定时才起作用,并且您的命令中没有-p,因为您发送的是GET而不是PUT或POST,所以无论如何也不会使用该选项。因此,要解决这个问题,只需删除-T和-H选项,它就会正常工作。提醒其他读者:如果在Windows上,只要URL包含特殊字符(如"&“或"?”),请用双引号将其括起来。
ab -n 10 -c 2 'http://phx5qa01c-02b0.stratus.phx.qa.ebay.com/.Build?format=text/html,text/plain&template-id=29b1468f-c8c3-db23-2f6f-74e112795540'https://stackoverflow.com/questions/17242560
复制相似问题