34

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

谢谢

4

4 回答 4

74

现在这是可能的。这是一个示例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

于 2014-11-12T20:57:10.317 回答
30

对于那些寻找内容类型“应用程序/json”示例的人:

wrk.method = "POST"
wrk.body = '{"firstKey": "somedata", "secondKey": "somedata"}'
wrk.headers["Content-Type"] = "application/json"
于 2019-01-31T09:36:25.570 回答
10

我建议使用wrk2而不是,wrk因为 wrk2 为并发请求提供了更好的支持。当content-type标题是application/json然后请转义特殊字符,如\nwith\\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
于 2019-05-24T20:06:13.923 回答
9

post_binary.lua这是一个用于发布二进制文件的示例 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

于 2020-03-30T08:34:02.577 回答