我开始尝试使用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
标志将其传递到命令行测试中。
如果您正在寻找一个内容类型为“application/json”的示例:
wrk.method = "POST"
wrk.body = '{"firstKey": "somedata", "secondKey": "somedata"}'
wrk.headers["Content-Type"] = "application/json"
wrk.body = '{"firstKey": "某些数据", "secondKey": "某些数据"}'
- suvtfopwpost_binary.lua
:"Content-Type:application/octet-stream"
。请注意,不要删除HTML标签,但您需要调整语言以使内容更加易于理解。wrk.method = "POST"
wrk.headers["Content-Type"] = "application/octet-stream"
file = io.open("dog.jpg", "rb")
wrk.body = file:read("*a")
那么请尝试使用以下命令:wrk "你的URL" -s post_binary.lua --latency -t 1 -c 1 -d 30s -R 1
我建议使用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"
同时您可以添加多个标题,如下:
Also you can add multiple header as
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