負荷テストにhttps://k6.ioを使用するのは初めてで、sleep
関数の動作について疑問に思っていました。
現在、複数のステージで負荷テストを構築しています。デフォルトの関数には、実行される多数のリクエスト (get および post) があります。
これらを数分間順番に実行すると、エラスティック Beanstalk で実行されているアプリの速度が低下し始め、最終的に 500 エラーがスローされることに気付きました。
ただし、次のようsleep
に各リクエストの後にステートメントを追加すると:
const getMe = http.get(`${appEndpoint}/me`, params)
check(getMe, {
'me: status was 200': r => r.status == 200,
'me: response time OK (under 500ms)': r => r.timings.duration < maxResponseTimeMs,
});
sleep(Math.floor(Math.random() * 4) + 1)
// next request would follow below
その後、問題なく仮想ユーザーの数を簡単に 10 倍に増やすことができます。
だから私の質問はこれです:
k6sleep
がすべての仮想ユーザーのすべてのリクエストをその時間一時停止するか、または一度に 1 人の仮想ユーザーからのリクエストを一時停止します。
私が理解しているように、仮想ユーザーは基本的に、負荷テストを実行する関数の並列実行にすぎdefault
ないため、関数全体がすべてのユーザーに対して一時停止するか、ユーザーごとにこれを実行します。
ドキュメントでこれに関する情報を見つけることができなかったので、ポインタをいただければ幸いです!
ありがとう