与wrk的POST请求?

时间:2013-03-07 01:47:26

标签: benchmarking wrk

我开始尝试wrk。它在服务器上使用起来非常简单,但我不知道如何执行其他类型的请求,例如POST。事实上,我甚至不知道这个工具是否允许它。文档很少。

由于

5 个答案:

答案 0 :(得分:39)

现在可以这样做。这是一个示例https://github.com/wg/wrk/blob/master/scripts/post.lua

wrk.method = "POST"
wrk.body   = "foo=bar&baz=quux"
wrk.headers["Content-Type"] = "application/x-www-form-urlencoded"

将其保存在* .lua脚本中,并使用-s标志将其传递到命令行测试中。

答案 1 :(得分:5)

对于那些寻找内容类型“ application / json”示例的人:

<meta http-equiv="X-UA-Compatible" content="IE=edge">

答案 2 :(得分:4)

这是一个示例lua脚本post_binary.lua,用于发布二进制文件:"Content-Type:application/octet-stream"

wrk.method = "POST"
wrk.headers["Content-Type"] = "application/octet-stream"

file = io.open("dog.jpg", "rb")
wrk.body = file:read("*a")

然后尝试:wrk "your_url" -s post_binary.lua --latency -t 1 -c 1 -d 30s -R 1

答案 3 :(得分:2)

根据wrk的创建者...这是不可能的,并且不可能执行除GET之外的其他HTTP方法。 http://github.com/wg/wrk/issues/22#issuecomment-14677726

答案 4 :(得分:0)

我建议使用wrk2而不是wrk,因为wrk2为并发请求提供了更好的支持。当content-type标头为application/json时,请转义\n等特殊字符并加上\\n和所有其他特殊字符。不这样做将向上游API发送无效的json,这将浪费您的调试时间。

创建扩展名为lua的文件,并将以下内容粘贴到其中。保存并与-s标志一起传递给wrk2命令。

wrk.method = "POST"
wrk.body = "{\"firstKey\": 'somedata', \"secondKey\": 'somedata'}"
wrk.headers["Content-Type"] = "application/json"

您还可以添加多个标头作为

wrk.headers["Header1"] = "Header1_Val"
wrk.headers["Header2"] = "Header2_Val"
wrk.headers["Header3"] = "Header3_Val"
wrk.headers["Header4"] = "Header4_Val"
wrk2 -t500 -c1000 -d160s -R10000 -s ~/Documents/luaTestScript.lua http://localhost:8080/test_endpoint