【ケーシックス】

k6 とは?

最終更新:
💡 シナリオに沿って負荷をかけ、応答時間やエラーを測る

Grafana Labs製のオープンソース負荷テストツール。JavaScriptでテストシナリオを記述し、APIやWebサイトの性能を測定できます。

📌 このページのポイント
k6:負荷をかけて性能を測る k6:シナリオ実行 テスト対象 仮想ユーザー(VU) Web・API等 要求 応答 測定・集計 応答時間・失敗率などを測る thresholdsで合否を判定 p(95) < 500 例:p95が500ミリ秒未満 500ミリ秒は説明用の基準 VU数とリクエスト数は別のもの
シナリオと実行条件を決めて測定します。p95は95パーセンタイルで、全件の最大値ではありません。
ひよこ ひよこ
k6って何をするツールなの?
ペンギン先生 ペンギン先生
シナリオに沿ってWebサービスやAPIなどへ負荷をかけ、応答時間やエラーなどを測るツールだよ。事前に性能上の問題を探せるけれど、試した条件での結果なので、本番で絶対に障害が起きないという保証にはならないんだ。
ひよこ ひよこ
どうやって使うの?
ペンギン先生 ペンギン先生
JavaScriptやTypeScriptでリクエストや待機などの動作を書き、k6 run script.jsなどで実行するよ。仮想ユーザー(VU)はシナリオを実行する主体。人数と、同時に飛ぶリクエスト数や1秒あたりのリクエスト数は同じものではないんだ。
ひよこ ひよこ
Node.jsのコードをそのまま使える?
ペンギン先生 ペンギン先生
k6独自の実行環境なので、Node.jsのfsやosなどのAPIに依存するコードはそのまま動かないよ。npmのライブラリでも、k6で使えるAPIだけで構成されているか、依存をまとめる必要があるかなどを確認しよう。
ひよこ ひよこ
平均の応答時間だけ見ればいい?
ペンギン先生 ペンギン先生
平均だけでは遅いリクエストの様子を捉えにくいので、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に加わったよ

参考資料

← 用語集にもどる