diff --git a/load-test.js b/load-test.js index a314624..b77a20e 100644 --- a/load-test.js +++ b/load-test.js @@ -29,14 +29,15 @@ const BROWSER_HEADERS = { export const options = { stages: [ - { duration: "30s", target: 10 }, // разгон до 10 пользователей - { duration: "1m", target: 50 }, // разгон до 50 - { duration: "3m", target: 50 }, // держим 50 три минуты - { duration: "30s", target: 0 }, // спад + { duration: "30s", target: 10 }, // разгон до 10 пользователей + { duration: "1m", target: 50 }, // разгон до 50 + { duration: "1m", target: 100 }, // разгон до 100 + { duration: "3m", target: 100 }, // держим 100 три минуты + { duration: "30s", target: 0 }, // спад ], thresholds: { 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 if (!isLoggedIn) { + // Случайная задержка 0-10s: распределяем 100 логинов во времени, + // иначе все VU стартуют одновременно и бьют rate-limit Better Auth. + sleep(Math.random() * 10); + const loginRes = http.post( `${BASE}/api/auth/sign-in/email`, JSON.stringify({ email: TEST_USER.email, password: TEST_USER.password }),