よっしー
こんにちは。よっしーです(^^)
今日は、k6 の Constant VUs についてご紹介します。
背景
Dockerで構築したWebアプリの開発環境において、k6のExecutorsについて調査したときの内容を備忘として残しました。
開発環境のソースは下記のリポジトリにあります。
Constant VUs
“constant-vus executor”を使用すると、指定された時間に対して、固定数のVUsができるだけ多くのイテレーションを実行します。
このエグゼキュータの簡略化バージョンとして、vusオプションとdurationオプションを使用できます。
options
オプション 一般的な設定オプションに加えて、このエグゼキュータには以下のオプションがあります。
オプション | タイプ | 説明 | デフォルト値 |
---|---|---|---|
duration (必須) | 文字列 | シナリオの合計実行時間(gracefulStopを除く) | – |
vus | 整数 | 同時に実行するVUsの数 | 1 |
いつ使用するか
特定の数の VU を一定時間実行する必要がある場合は、このエグゼキュータを使用します。
サンプル
この例では、10のVUが30秒間、一貫して実行されるようにスケジュールされています。
import http from 'k6/http';
import { sleep } from 'k6';
export const options = {
discardResponseBodies: true,
scenarios: {
contacts: {
executor: 'constant-vus',
vus: 10,
duration: '30s',
},
},
};
export default function () {
http.get('https://test.k6.io/contacts.php');
// Injecting sleep
// Total iteration time is sleep + time to finish request.
sleep(0.5);
}
観察
以下のグラフは、この例のスクリプトのパフォーマンスを表しています。
テストシナリオの入力と結果に基づいて以下のポイントが考えられます:
- VUの数は10で固定され、テストが開始される前に初期化されます。
- 全体のテストの実行時間は、設定された30秒間で固定されています。
- デフォルトの関数の各イテレーションは約515ミリ秒(おおよそ2回/秒)かかると予想されています。
- 最大スループット(最高効率)は、したがって約20回/秒であると予想されます(2回/秒 * 10のVU)。
- 最大スループットはテストの大部分で達成され、維持されます。
- したがって、合計で約600回のイテレーションが実行されます(30秒 * 20回/秒)。
おわりに
今日は、k6 の Constant VUs についてご紹介しました。
よっしー
何か質問や相談があれば、コメントをお願いします。また、エンジニア案件の相談にも随時対応していますので、お気軽にお問い合わせください。
それでは、また明日お会いしましょう(^^)
コメント