我开始尝试wrk。它在服务器上使用起来非常简单,但我不知道如何执行其他类型的请求,例如 POST。事实上,我什至不知道这个工具是否允许它。文档非常少。
谢谢
现在这是可能的。这是一个示例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
对于那些寻找内容类型“应用程序/json”示例的人:
wrk.method = "POST"
wrk.body = '{"firstKey": "somedata", "secondKey": "somedata"}'
wrk.headers["Content-Type"] = "application/json"
我建议使用wrk2
而不是,wrk
因为 wrk2 为并发请求提供了更好的支持。当content-type
标题是application/json
然后请转义特殊字符,如\n
with\\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
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