단일 API 부하 테스트 (Load Test) 결과
- 테스트 환경: 로컬 Docker (mopl-app-1 단일 서버, MacBook Air M5 10코어 / 24GB)
- 테스트 유형: Load Test (단일 API 엔드포인트별 순수 성능 측정)
- VU 패턴: 25 → 50 → 70 → 70 유지 → 0 (총 5분)
- 인증 방식: setup()에서 전체 유저 로그인 후 토큰 재사용 (순수 API 호출만 측정)
- 목적: 개별 API 엔드포인트의 성능 한계, 병목 지점, DB 커넥션 풀 상태 파악
캐싱 & 인덱싱 근거 분석
인덱싱 적용 결과
1. content-list API (콘텐츠 목록 조회)
k6 결과
█ THRESHOLDS
http_req_duration
✓ 'p(95)<500' p(95)=215.19ms
http_req_failed
✓ 'rate<0.05' rate=0.00%
█ TOTAL RESULTS
checks_total.......: 39048 126.996091/s
checks_succeeded...: 100.00% 39048 out of 39048
checks_failed......: 0.00% 0 out of 39048
✓ 콘텐츠 목록 조회 성공
HTTP
http_req_duration..............: avg=51.42ms min=4.64ms med=18.39ms max=1.46s p(90)=127.01ms p(95)=215.19ms
{ expected_response:true }...: avg=51.42ms min=4.64ms med=18.39ms max=1.46s p(90)=127.01ms p(95)=215.19ms
http_req_failed................: 0.00% 0 out of 39149
http_reqs......................: 39149 127.324574/s
EXECUTION
iteration_duration.............: avg=1.15s min=1.01s med=1.05s max=3.91s p(90)=1.42s p(95)=1.65s
iterations.....................: 13016 42.33203/s
vus............................: 1 min=0 max=70
vus_max........................: 70 min=70 max=70
NETWORK
data_received..................: 271 MB 880 kB/s
data_sent......................: 25 MB 83 kB/s
running (5m07.5s), 00/70 VUs, 13016 complete and 0 interrupted iterations
default ✓ [======================================] 00/70 VUs 5m0s
docker stats (Peak 구간)
| Container |
CPU % |
MEM Usage |
MEM % |
| mopl-app-1 |
134.50% |
793.8MiB |
10.13% |
| mopl-postgres-1 |
85.53% |
102.2MiB |
1.30% |
| redis |
16.78% |
13.65MiB |
0.17% |
HikariCP 커넥션 풀 (Peak 구간)
| 지표 |
값 |
의미 |
| active |
4 |
사용 중 커넥션 |
| idle |
6 |
유휴 커넥션 |
| max |
10 |
최대 풀 크기 |
| pending |
0 |
대기 중 요청 |
| usage_max |
0.511s |
커넥션 최대 사용 시간 |
2. content-detail API (콘텐츠 상세 조회)
k6 결과