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