Update load test to 100 VUs with login jitter
Stages: 10 → 50 → 100 VUs, hold 3 min, ramp down. Added random 0-10s sleep before first login to spread auth requests and reduce Better Auth rate-limit retries. Results: p(95)=244ms, pages 100% OK, auth retries 6.28% (rate-limit artifact).
This commit is contained in:
+10
-5
@@ -29,14 +29,15 @@ const BROWSER_HEADERS = {
|
|||||||
|
|
||||||
export const options = {
|
export const options = {
|
||||||
stages: [
|
stages: [
|
||||||
{ duration: "30s", target: 10 }, // разгон до 10 пользователей
|
{ duration: "30s", target: 10 }, // разгон до 10 пользователей
|
||||||
{ duration: "1m", target: 50 }, // разгон до 50
|
{ duration: "1m", target: 50 }, // разгон до 50
|
||||||
{ duration: "3m", target: 50 }, // держим 50 три минуты
|
{ duration: "1m", target: 100 }, // разгон до 100
|
||||||
{ duration: "30s", target: 0 }, // спад
|
{ duration: "3m", target: 100 }, // держим 100 три минуты
|
||||||
|
{ duration: "30s", target: 0 }, // спад
|
||||||
],
|
],
|
||||||
thresholds: {
|
thresholds: {
|
||||||
http_req_duration: ["p(95)<3000"], // 95% запросов быстрее 3 секунд
|
http_req_duration: ["p(95)<3000"], // 95% запросов быстрее 3 секунд
|
||||||
http_req_failed: ["rate<0.05"], // ошибок меньше 5% (было 1%, но до фикса Kinescope)
|
http_req_failed: ["rate<0.05"], // ошибок меньше 5%
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -49,6 +50,10 @@ export default function () {
|
|||||||
|
|
||||||
// 1. Логин — только при первой итерации VU
|
// 1. Логин — только при первой итерации VU
|
||||||
if (!isLoggedIn) {
|
if (!isLoggedIn) {
|
||||||
|
// Случайная задержка 0-10s: распределяем 100 логинов во времени,
|
||||||
|
// иначе все VU стартуют одновременно и бьют rate-limit Better Auth.
|
||||||
|
sleep(Math.random() * 10);
|
||||||
|
|
||||||
const loginRes = http.post(
|
const loginRes = http.post(
|
||||||
`${BASE}/api/auth/sign-in/email`,
|
`${BASE}/api/auth/sign-in/email`,
|
||||||
JSON.stringify({ email: TEST_USER.email, password: TEST_USER.password }),
|
JSON.stringify({ email: TEST_USER.email, password: TEST_USER.password }),
|
||||||
|
|||||||
Reference in New Issue
Block a user