web-dev-qa-db-ja.com

POST wrkでリクエストしますか?

wrk を試し始めました。使い方はとても簡単で、サーバー上では非常に難しいですが、POSTなどの他の種類のリクエストを実行する方法がわかりません。実際、このツールで許可されているかどうかさえわかりません。ドキュメントはごくわずかです。

ありがとう

19
jackdbernier

これは現在可能です。次に例を示します 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フラグを指定してコマンドラインテストに渡します。

45
Steve

コンテンツタイプの「application/json」の例を探している人のために:

wrk.method = "POST"
wrk.body = "{\"firstKey\": 'somedata', \"secondKey\": 'somedata'}"
wrk.headers["Content-Type"] = "application/json"
9
Emmanuel N K

Wrkの作成者によると... GET以外のHTTPメソッドを実行することは不可能であり、不可能になるでしょう。 http://github.com/wg/wrk/issues/22#issuecomment-14677726

2
jackdbernier

Wrk2は同時リクエストをより適切にサポートするため、wrkの代わりにwrk2を使用することをお勧めします。 content-typeヘッダーがapplication/jsonの場合は、\nなどの特殊文字を\\nおよびその他すべての特殊文字とともにエスケープしてください。これを行わないと、無効なjsonがアップストリームAPIに送信され、デバッグに時間がかかります。

拡張子が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
2

これが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

0
hao