こんにちは。よっしーです(^^)
今日は、k6 の Externally controlled についてご紹介します。
背景
Dockerで構築したWebアプリの開発環境において、k6のExecutorsについて調査したときの内容を備忘として残しました。
開発環境のソースは下記のリポジトリにあります。
Externally controlled
“k6のREST APIまたはCLIを使用して実行を制御およびスケーリングする”
以前は、pause、resume、およびscale CLIコマンドが使用され、k6の実行をグローバルに制御していました。このエグゼキュータは、実行時にk6の実行を制御するために使用できるより良いAPIを提供することにより、同じジョブを実行します。
注意:外部から制御されるエグゼキュータの場合、アクティブまたは最大のVUの数を変更するためにscale CLIコマンドに引数を渡すことは、外部制御されるエグゼキュータにのみ影響します。
options
外部制御されるエグゼキュータには、graceful stopがありません。
また、このエグゼキュータにはすべての共通の設定オプションがあり、以下の特定のオプションもあります。
以下は、”externally-controlled executor”のオプションとその説明です。
オプション | タイプ | 説明 | デフォルト値 |
---|---|---|---|
duration (必須) | 文字列 | テストの合計実行時間 | – |
vus | 整数 | 同時に実行するVUの数 | – |
maxVUs | 整数 | テスト実行中に許可される最大のVU数 | – |
いつ使用するか
このエグゼキュータは、テスト実行中にVUの数を制御したい場合に使用されます。ただし、重要な注意点として、このエグゼキュータはk6クラウドでサポートされておらず、ローカルでk6 runとともにのみ使用できます。クラウド環境では使用できないことに注意してください。
サンプル
この例では、実行時に制御可能なテストを実行します。テストは10 VUsから始まり、最大50 VUsまで増加し、合計の実行時間は10分です。このようなテストを実行するには、”externally-controlled executor”を使用しますが、クラウド環境ではサポートされていないことに注意してください。
import http from 'k6/http';
export const options = {
discardResponseBodies: true,
scenarios: {
contacts: {
executor: 'externally-controlled',
vus: 10,
maxVUs: 50,
duration: '10m',
},
},
};
export default function () {
http.get('https://test.k6.io/contacts.php');
}
おわりに
今日は、k6 の Externally controlled についてご紹介しました。
何か質問や相談があれば、コメントをお願いします。また、エンジニア案件の相談にも随時対応していますので、お気軽にお問い合わせください。
それでは、また明日お会いしましょう(^^)
コメント