【发布时间】:2013-02-22 02:03:49
【问题描述】:
我开始尝试wrk。它在服务器上使用起来非常简单,但我不知道如何执行其他类型的请求,例如 POST。事实上,我什至不知道这个工具是否允许它。文档非常少。
谢谢
【问题讨论】:
标签: benchmarking wrk
我开始尝试wrk。它在服务器上使用起来非常简单,但我不知道如何执行其他类型的请求,例如 POST。事实上,我什至不知道这个工具是否允许它。文档非常少。
谢谢
【问题讨论】:
标签: benchmarking wrk
这现在是可能的。这是一个例子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 标志将其传递到您的命令行测试中。
【讨论】:
这是一个用于发布二进制文件的示例 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
【讨论】:
对于那些寻找内容类型“应用程序/json”示例的人:
wrk.method = "POST"
wrk.body = '{"firstKey": "somedata", "secondKey": "somedata"}'
wrk.headers["Content-Type"] = "application/json"
【讨论】:
wrk.body = '{"firstKey": "somedata", "secondKey": "somedata"}'
我会推荐使用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
【讨论】: