以前、Tsungを積んだDockerで負荷テストを行うという記事を書きました。
たしかこのときは、ELBにぶら下げたアプリケーションへの負荷テストの過程でTsungを見つけてためしたような、そうでないような(うろ覚え)
今回、私が負荷テストの対象としたのはサーバレスな環境です。
つまり API Gateway+Lambda+αで構成されるサービスに対して負荷テストをかけようと思いました。
前回使ったtsung環境は使えるのか?
私のケースに限り、使えませんでした。というより使いませんでした。
私のケースというのは、予め有志が作成したtsung入のdockerイメージをつかっていることです。
このイメージをそのままつかっても、ハンドシェイクエラーが起こりAPI Gatewayに通信ができません。
ここの記事にある通り、tsungをリコンパイルすればできるのかもしれません。
これはまた自分でtsung入のdockerイメージを作る羽目になるので、まったくdockerの恩恵をうけてないので今回このイメージは使いません。
wrkを使う
dockerHubにwrkを積んだイメージがありました!
これですぐにwrkが使えますね。使わせていただいたwrkのdockerイメージはこちら
docker-compose.yml
version: '3'
services:
wrk:
image: williamyeh/wrk:latest
command: /data/attack.ash
entrypoint: ash
working_dir: /data
volumes:
- ./:/data
entrypointがデフォだとwrkとなります。
私の場合は、自分で書いたシェルを読み込ませたかったので、entorypointをashとしました。
/data/attack.ash
#!/bin/ash
# 負荷テスト1
wrk -t 2 -c 5 -d 5s -s /data/script_post_1.lua https://api-gateway
# 負荷テスト2
wrk -t 2 -c 5 -d 5s -s /data/script_post_2.lua https://api-gateway
script_post_1.lua
wrk.method = "POST"
wrk.headers["Content-Type"] = "application/json"
body = [[
{
"hoge": "hoge"
}
]]
wrk.body = body
これで、docker-compose run wrk
を実行すると負荷がかかります。