【ケーシックス】
k6 とは?
最終更新:
💡 シナリオに沿って負荷をかけ、応答時間やエラーを測る
Grafana Labs製のオープンソース負荷テストツール。JavaScriptでテストシナリオを記述し、APIやWebサイトの性能を測定できます。
📌 このページのポイント
- JavaScriptやTypeScriptでシナリオを書き、CLIなどで実行できる
- 仮想ユーザーの動作や負荷条件を設定して性能を測る
- 応答時間や失敗率などの指標にthresholdsで合否基準を設定できる
- 結果は設定したシナリオと実行環境での測定であり、本番の無障害を保証しない
k6って何をするツールなの?
シナリオに沿ってWebサービスやAPIなどへ負荷をかけ、応答時間やエラーなどを測るツールだよ。事前に性能上の問題を探せるけれど、試した条件での結果なので、本番で絶対に障害が起きないという保証にはならないんだ。
どうやって使うの?
JavaScriptやTypeScriptでリクエストや待機などの動作を書き、k6 run script.jsなどで実行するよ。仮想ユーザー(VU)はシナリオを実行する主体。人数と、同時に飛ぶリクエスト数や1秒あたりのリクエスト数は同じものではないんだ。
Node.jsのコードをそのまま使える?
平均の応答時間だけ見ればいい?
平均だけでは遅いリクエストの様子を捉えにくいので、p95やp99などのパーセンタイルも見るよ。p95は測った時間の95パーセンタイルで、全件の最大値ではない。失敗率なども合わせて、サービスの目的に合う指標を選ぼう。
CIで自動判定できる?
thresholdsで合格基準を指定できるよ。例えばhttp_req_durationにp(95)<500を指定すると、p95が500ミリ秒未満かを評価する。基準に失敗すると終了コードが0以外になるのでCIに組み込める。500ミリ秒は説明用で、目的に合う基準を決めよう。
まとめ:ざっくりこれだけ覚えればOK!
「k6」って出てきたら「コードでシナリオを書ける負荷テストツール」と思えばだいたいOK!
📖 おまけ:英語の意味
「k6」 = ケーシックス
💬 LoadImpactのチームが2016年にオープンソースの負荷テストツールを作り始め、2021年にGrafana Labsに加わったよ