반응형
docker run -d \
--name influxdb \
--network loca-net \
-p 8086:8086 \
influxdb:1.8
docker run -d \
--name grafana \
--network vivim-net \
-p 3000:3000 \
grafana/grafana:latest
해당서버 주소:3000 으로 접속하면 아래와 같은 로그인 창이 나온다
admin/ admin 으로 로그인한다
그후
import http from 'k6/http';
import { sleep, check } from 'k6';
export let options = {
vus: 20, // 동시 가상 사용자 수
duration: '3m', // 테스트 총 시간
thresholds: {
http_req_duration: ['p(95)<500'], // 95백분위 응답시간 500ms 이내 목표
},
ext: {
influxdb: {
addr: 'http://influxdb:8086', // InfluxDB 주소 (컨테이너 이름 or localhost)
bucket: 'k6-bucket', // 생성한 버킷 이름
org: 'my-org', // 생성한 조직 이름
token: 'YOUR_K6_TOKEN', // 발급받은 API 토큰
measurement: 'projects_all', // 메트릭 저장용 measurement 이름
},
},
};
// CookieJar 인스턴스는 init 컨텍스트에서 생성 → VU마다 공유됨
const jar = new http.CookieJar();
export default function () {
// __ITER는 이 VU의 반복 횟수 (첫 반복에만 로그인 실행)
if (__ITER === 0) {
const loginRes = http.post(
'https://vivim-container/api/auth/login',
JSON.stringify({
email: 'admin@a.a',
password: '----', // 실제 비밀번호로 교체
}),
{
headers: { 'Content-Type': 'application/json' },
jar, // 쿠키 저장소 지정
}
);
check(loginRes, {
'로그인 성공(200)': (r) => r.status === 200,
});
sleep(1);
}
// 로그인 후 발급된 쿠키가 자동으로 Cookie 헤더에 실려 전송됨
const res = http.get(
'https://vivim-container/api/projects/all',
{ jar }
);
check(res, {
'프로젝트 목록 조회 성공(200)': (r) => r.status === 200,
});
sleep(1);
}
와 같은 스크립트를 작성한 후
docker run -it --rm --network vivim-net -v $(pwd)/projects-load-test.js:/script.js grafana/k6 run --out influxdb=http://influxdb:8086/k6db /script.js
컨테이너를 실행 하고
그라파나 대쉬 보드로 접속
Import dashboard 클릭 그 후
반응형
'Spring' 카테고리의 다른 글
Audit Log 조회 API 성능 개선기 - 2 (8) | 2025.08.08 |
---|---|
Audit Log 조회 API 성능 개선기 - 1 (4) | 2025.07.19 |
Github Action 환경에서 모든 테스트코드가 실패한다. (0) | 2025.07.19 |
테스트 코드는 왜 짜야할까.. (0) | 2025.07.17 |
DB에 인덱싱을 적용하면 왜 빨라질까? (0) | 2025.06.09 |