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