与wrk的POST请求?

jac*_*ier 17 benchmarking wrk

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

谢谢

Ste*_*eve 47

这是可能的.这是一个示例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"
Run Code Online (Sandbox Code Playgroud)

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


Emm*_*N K 10

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

wrk.method = "POST"
wrk.body = "{\"firstKey\": 'somedata', \"secondKey\": 'somedata'}"
wrk.headers["Content-Type"] = "application/json"
Run Code Online (Sandbox Code Playgroud)

  • 要发布json数据,这种格式实际上对我有用:`wrk.body ='{“ firstKey”:“ somedata”,“ secondKey”:“ somedata”}''` (5认同)

小智 9

我会推荐使用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"
Run Code Online (Sandbox Code Playgroud)

您也可以添加多个标题作为

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


hao*_*hao 7

这是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")
Run Code Online (Sandbox Code Playgroud)

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