Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
77 changes: 77 additions & 0 deletions .claude/resources/perf/110/general-education/jvm-metrics-0.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
# jvm-metrics-0

샘플 28건 / 간격 6s / 구간 0~164s / 요청 2006건

## 게이지 (샘플 중 최대, 평균)

| 지표 | 최대 | 평균 | 최대 시점(s) | 기준 |
|---|---|---|---|---|
| heap 사용 (MB) | 798.8 | 521.7 | 85 | heap max 4096.0 MB |
| GC 후 old gen 점유 (%) | 8.3 | 7.6 | 123 | 바닥이 오르면 누수나 캐시 적재 |
| GC 최장 정지 (ms) | 145.0 | - | 0 | |
| GC overhead | 0.011 | 0.007 | 123 | GC가 쓴 CPU 비율 (0~1) |
| 스레드 수 / blocked | 63 / 0 | 58.7 / 0.0 | 0 | blocked > 0이면 락 경합 |
| HikariCP active | 10 | 5.8 | 22 | 풀 크기는 record.md 측정 환경 |
| HikariCP pending | 20 | 8.0 | 43 | 0보다 크면 커넥션 대기 |
| HikariCP acquire max (ms) | 2883.0 | - | 78 | |
| 처리 중 요청 수 / 최장 (ms) | 30 / 2694.7 | 14.0 / - | 43 | 서버 안 동시 요청 |
| process CPU | 0.230 | 0.135 | 111 | 0~1 |
| system CPU | 0.832 | 0.597 | 15 | 0~1 |

## 누적 (측정 구간 증분)

| 지표 | 시작 | 끝 | 증분 | 요청당 |
|---|---|---|---|---|
| GC 횟수 | 43 | 118 | 75 | 0.037 |
| GC 일시정지 합 (ms) | 710.0 | 3401.0 | 2691.0 | 1.341 |
| 할당량 (MB) | 9584.0 | 42010.0 | 32426.0 | 16.165 |
| old gen 승격량 (MB) | 208.7 | 288.9 | 80.1 | 0.040 |
| HikariCP timeout | 0 | 0 | 0 | 0.000 |
| 커넥션 보유 평균 (ms) | - | - | 540.5 | - |

## 리포지토리 호출

| repository.method | 호출 증분 | 요청당 | mean ms |
|---|---|---|---|
| CourseRepository.findByArea | 2006 | 1.000 | 242.3 |

## 캐시

캐시: 측정 구간 접근 없음

## Redis

Redis: 측정 구간 호출 없음

## 타임라인

| offset_s | heap_used_mb | gc_pause_ms(증분) | gc_pause_max_ms | threads_blocked | hikari_active | hikari_pending | http_active | process_cpu |
|---|---|---|---|---|---|---|---|---|
| 0 | 581.8 | 0.0 | 145.0 | 0 | 0 | 0 | 0 | 0.008 |
| 5 | 583.8 | 0.0 | 145.0 | 0 | 0 | 0 | 0 | 0.000 |
| 10 | 290.0 | 3.0 | 145.0 | 0 | 1 | 0 | 1 | 0.015 |
| 15 | 427.2 | 34.0 | 145.0 | 0 | 7 | 0 | 7 | 0.203 |
| 22 | 568.7 | 142.0 | 145.0 | 0 | 10 | 3 | 13 | 0.220 |
| 28 | 386.7 | 183.0 | 145.0 | 0 | 10 | 9 | 20 | 0.210 |
| 36 | 327.2 | 157.0 | 145.0 | 0 | 10 | 18 | 28 | 0.201 |
| 43 | 336.7 | 180.0 | 145.0 | 0 | 10 | 20 | 30 | 0.214 |
| 49 | 377.9 | 287.0 | 145.0 | 0 | 10 | 20 | 30 | 0.218 |
| 58 | 514.9 | 106.0 | 145.0 | 0 | 10 | 17 | 27 | 0.209 |
| 65 | 584.1 | 166.0 | 145.0 | 0 | 10 | 20 | 30 | 0.222 |
| 71 | 713.1 | 185.0 | 145.0 | 0 | 10 | 20 | 30 | 0.227 |
| 78 | 757.7 | 142.0 | 145.0 | 0 | 10 | 20 | 30 | 0.216 |
| 85 | 798.8 | 130.0 | 71.0 | 0 | 10 | 19 | 30 | 0.206 |
| 92 | 391.2 | 182.0 | 71.0 | 0 | 10 | 20 | 30 | 0.222 |
| 99 | 428.5 | 125.0 | 71.0 | 0 | 10 | 20 | 30 | 0.220 |
| 104 | 689.4 | 109.0 | 71.0 | 0 | 10 | 12 | 24 | 0.222 |
| 111 | 417.4 | 244.0 | 71.0 | 0 | 10 | 6 | 16 | 0.230 |
| 117 | 649.2 | 136.0 | 71.0 | 0 | 10 | 1 | 11 | 0.188 |
| 123 | 640.2 | 156.0 | 71.0 | 0 | 4 | 0 | 5 | 0.222 |
| 129 | 515.0 | 24.0 | 71.0 | 0 | 0 | 0 | 0 | 0.117 |
| 134 | 515.0 | 0.0 | 71.0 | 0 | 0 | 0 | 0 | 0.000 |
| 139 | 517.0 | 0.0 | 71.0 | 0 | 0 | 0 | 0 | 0.000 |
| 144 | 517.0 | 0.0 | 71.0 | 0 | 0 | 0 | 0 | 0.001 |
| 149 | 519.0 | 0.0 | 71.0 | 0 | 0 | 0 | 0 | 0.000 |
| 154 | 519.0 | 0.0 | 71.0 | 0 | 0 | 0 | 0 | 0.000 |
| 159 | 519.0 | 0.0 | 71.0 | 0 | 0 | 0 | 0 | 0.000 |
| 164 | 521.0 | 0.0 | 71.0 | 0 | 0 | 0 | 0 | 0.000 |
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
# jvm-metrics-1

샘플 24건 / 간격 6s / 구간 0~135s / 요청 1771건

## 게이지 (샘플 중 최대, 평균)

| 지표 | 최대 | 평균 | 최대 시점(s) | 기준 |
|---|---|---|---|---|
| heap 사용 (MB) | 2895.7 | 1438.0 | 135 | heap max 4096.0 MB |
| GC 후 old gen 점유 (%) | 67.9 | 29.3 | 125 | 바닥이 오르면 누수나 캐시 적재 |
| GC 최장 정지 (ms) | 304.0 | - | 96 | |
| GC overhead | 0.027 | 0.012 | 125 | GC가 쓴 CPU 비율 (0~1) |
| 스레드 수 / blocked | 64 / 0 | 59.7 / 0.0 | 0 | blocked > 0이면 락 경합 |
| HikariCP active | 10 | 7.5 | 16 | 풀 크기는 record.md 측정 환경 |
| HikariCP pending | 20 | 10.6 | 35 | 0보다 크면 커넥션 대기 |
| HikariCP acquire max (ms) | 4005.0 | - | 85 | |
| 처리 중 요청 수 / 최장 (ms) | 30 / 3741.3 | 18.4 / - | 35 | 서버 안 동시 요청 |
| process CPU | 0.278 | 0.176 | 73 | 0~1 |
| system CPU | 0.746 | 0.677 | 49 | 0~1 |

## 누적 (측정 구간 증분)

| 지표 | 시작 | 끝 | 증분 | 요청당 |
|---|---|---|---|---|
| GC 횟수 | 43 | 135 | 92 | 0.052 |
| GC 일시정지 합 (ms) | 628.0 | 8082.0 | 7454.0 | 4.209 |
| 할당량 (MB) | 11324.0 | 40138.0 | 28814.0 | 16.270 |
| old gen 승격량 (MB) | 257.7 | 2736.9 | 2479.2 | 1.400 |
| HikariCP timeout | 0 | 0 | 0 | 0.000 |
| 커넥션 보유 평균 (ms) | - | - | 613.3 | - |

## 리포지토리 호출

| repository.method | 호출 증분 | 요청당 | mean ms |
|---|---|---|---|
| CourseRepository.findByArea | 1771 | 1.000 | 174.5 |

## 캐시

캐시: 측정 구간 접근 없음

## Redis

Redis: 측정 구간 호출 없음

## 타임라인

| offset_s | heap_used_mb | gc_pause_ms(증분) | gc_pause_max_ms | threads_blocked | hikari_active | hikari_pending | http_active | process_cpu |
|---|---|---|---|---|---|---|---|---|
| 0 | 784.0 | 0.0 | 75.0 | 0 | 0 | 0 | 0 | 0.083 |
| 5 | 786.0 | 0.0 | 75.0 | 0 | 0 | 0 | 0 | 0.001 |
| 10 | 490.2 | 40.0 | 75.0 | 0 | 2 | 0 | 2 | 0.176 |
| 16 | 562.0 | 96.0 | 75.0 | 0 | 10 | 1 | 11 | 0.248 |
| 23 | 657.9 | 88.0 | 75.0 | 0 | 10 | 8 | 18 | 0.185 |
| 29 | 501.5 | 209.0 | 124.0 | 0 | 10 | 14 | 23 | 0.186 |
| 35 | 809.9 | 324.0 | 124.0 | 0 | 10 | 20 | 30 | 0.208 |
| 42 | 627.6 | 556.0 | 163.0 | 0 | 10 | 18 | 29 | 0.202 |
| 49 | 847.9 | 333.0 | 171.0 | 0 | 10 | 18 | 29 | 0.209 |
| 55 | 959.8 | 151.0 | 171.0 | 0 | 10 | 20 | 30 | 0.136 |
| 61 | 1069.8 | 129.0 | 171.0 | 0 | 10 | 17 | 29 | 0.245 |
| 66 | 854.2 | 205.0 | 171.0 | 0 | 10 | 18 | 30 | 0.270 |
| 73 | 1069.6 | 269.0 | 171.0 | 0 | 10 | 20 | 30 | 0.278 |
| 79 | 1221.9 | 369.0 | 171.0 | 0 | 10 | 20 | 30 | 0.208 |
| 85 | 1355.5 | 725.0 | 294.0 | 0 | 10 | 20 | 30 | 0.190 |
| 90 | 1681.9 | 585.0 | 294.0 | 0 | 10 | 20 | 30 | 0.235 |
| 96 | 2122.9 | 778.0 | 304.0 | 0 | 10 | 17 | 28 | 0.231 |
| 102 | 1959.8 | 317.0 | 304.0 | 0 | 10 | 15 | 25 | 0.231 |
| 107 | 2245.9 | 492.0 | 304.0 | 0 | 10 | 8 | 18 | 0.249 |
| 113 | 2463.9 | 382.0 | 304.0 | 0 | 9 | 0 | 11 | 0.135 |
| 119 | 2755.5 | 987.0 | 304.0 | 0 | 8 | 0 | 8 | 0.193 |
| 125 | 2893.7 | 419.0 | 304.0 | 0 | 0 | 0 | 0 | 0.129 |
| 130 | 2893.7 | 0.0 | 304.0 | 0 | 0 | 0 | 0 | 0.000 |
| 135 | 2895.7 | 0.0 | 304.0 | 0 | 0 | 0 | 0 | 0.000 |
72 changes: 72 additions & 0 deletions .claude/resources/perf/110/general-education/jvm-metrics-1.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
# jvm-metrics-1

샘플 23건 / 간격 6s / 구간 0~124s / 요청 3097건

## 게이지 (샘플 중 최대, 평균)

| 지표 | 최대 | 평균 | 최대 시점(s) | 기준 |
|---|---|---|---|---|
| heap 사용 (MB) | 1182.9 | 766.0 | 61 | heap max 4096.0 MB |
| GC 후 old gen 점유 (%) | 6.7 | 6.6 | 32 | 바닥이 오르면 누수나 캐시 적재 |
| GC 최장 정지 (ms) | 99.0 | - | 83 | |
| GC overhead | 0.013 | 0.012 | 83 | GC가 쓴 CPU 비율 (0~1) |
| 스레드 수 / blocked | 65 / 0 | 60.0 / 0.0 | 0 | blocked > 0이면 락 경합 |
| HikariCP active | 10 | 8.4 | 16 | 풀 크기는 record.md 측정 환경 |
| HikariCP pending | 20 | 11.7 | 38 | 0보다 크면 커넥션 대기 |
| HikariCP acquire max (ms) | 2225.0 | - | 101 | |
| 처리 중 요청 수 / 최장 (ms) | 30 / 2139.7 | 20.2 / - | 38 | 서버 안 동시 요청 |
| process CPU | 0.373 | 0.295 | 112 | 0~1 |
| system CPU | 0.793 | 0.697 | 10 | 0~1 |

## 누적 (측정 구간 증분)

| 지표 | 시작 | 끝 | 증분 | 요청당 |
|---|---|---|---|---|
| GC 횟수 | 32 | 88 | 56 | 0.018 |
| GC 일시정지 합 (ms) | 536.0 | 2294.0 | 1758.0 | 0.568 |
| 할당량 (MB) | 12938.0 | 62284.0 | 49346.0 | 15.933 |
| old gen 승격량 (MB) | 237.5 | 250.6 | 13.1 | 0.004 |
| HikariCP timeout | 0 | 0 | 0 | 0.000 |
| 커넥션 보유 평균 (ms) | - | - | 349.1 | - |

## 리포지토리 호출

| repository.method | 호출 증분 | 요청당 | mean ms |
|---|---|---|---|
| CourseRepository.findByArea | 3095 | 0.999 | 98.8 |

## 캐시

캐시: 측정 구간 접근 없음

## Redis

Redis: 측정 구간 호출 없음

## 타임라인

| offset_s | heap_used_mb | gc_pause_ms(증분) | gc_pause_max_ms | threads_blocked | hikari_active | hikari_pending | http_active | process_cpu |
|---|---|---|---|---|---|---|---|---|
| 0 | 365.0 | 0.0 | 74.0 | 0 | 0 | 0 | 0 | 0.000 |
| 5 | 367.0 | 0.0 | 74.0 | 0 | 0 | 0 | 0 | 0.001 |
| 10 | 1159.0 | 20.0 | 74.0 | 0 | 6 | 0 | 6 | 0.207 |
| 16 | 685.9 | 86.0 | 74.0 | 0 | 10 | 1 | 11 | 0.303 |
| 21 | 692.9 | 70.0 | 74.0 | 0 | 10 | 6 | 16 | 0.368 |
| 27 | 442.2 | 94.0 | 74.0 | 0 | 10 | 10 | 20 | 0.333 |
| 32 | 411.5 | 106.0 | 74.0 | 0 | 10 | 17 | 28 | 0.360 |
| 38 | 390.2 | 101.0 | 74.0 | 0 | 10 | 20 | 30 | 0.349 |
| 44 | 360.0 | 134.0 | 92.0 | 0 | 10 | 20 | 30 | 0.358 |
| 49 | 1084.0 | 41.0 | 92.0 | 0 | 10 | 20 | 30 | 0.344 |
| 55 | 1034.0 | 100.0 | 92.0 | 0 | 10 | 19 | 29 | 0.348 |
| 61 | 1182.9 | 80.0 | 92.0 | 0 | 10 | 19 | 29 | 0.350 |
| 67 | 1024.0 | 96.0 | 92.0 | 0 | 10 | 20 | 30 | 0.351 |
| 72 | 1123.0 | 40.0 | 92.0 | 0 | 10 | 20 | 30 | 0.284 |
| 78 | 815.1 | 108.0 | 92.0 | 0 | 10 | 15 | 25 | 0.307 |
| 83 | 1165.1 | 118.0 | 99.0 | 0 | 10 | 19 | 30 | 0.306 |
| 89 | 979.1 | 122.0 | 99.0 | 0 | 10 | 19 | 29 | 0.324 |
| 95 | 381.1 | 98.0 | 99.0 | 0 | 10 | 20 | 30 | 0.285 |
| 101 | 694.6 | 36.0 | 99.0 | 0 | 10 | 14 | 24 | 0.293 |
| 106 | 760.1 | 111.0 | 99.0 | 0 | 10 | 7 | 18 | 0.355 |
| 112 | 946.2 | 87.0 | 99.0 | 0 | 10 | 3 | 13 | 0.373 |
| 118 | 786.1 | 82.0 | 99.0 | 0 | 7 | 0 | 7 | 0.331 |
| 124 | 769.1 | 28.0 | 99.0 | 0 | 0 | 0 | 0 | 0.251 |
83 changes: 83 additions & 0 deletions .claude/resources/perf/110/general-education/jvm-metrics-2.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
# jvm-metrics-2

샘플 29건 / 간격 5s / 구간 0~146s / 요청 7268건

## 게이지 (샘플 중 최대, 평균)

| 지표 | 최대 | 평균 | 최대 시점(s) | 기준 |
|---|---|---|---|---|
| heap 사용 (MB) | 447.6 | 267.2 | 47 | heap max 4096.0 MB |
| GC 후 old gen 점유 (%) | 2.4 | 2.2 | 62 | 바닥이 오르면 누수나 캐시 적재 |
| GC 최장 정지 (ms) | 37.0 | - | 0 | |
| GC overhead | 0.002 | 0.002 | 26 | GC가 쓴 CPU 비율 (0~1) |
| 스레드 수 / blocked | 65 / 0 | 60.9 / 0.0 | 0 | blocked > 0이면 락 경합 |
| HikariCP active | 10 | 7.0 | 21 | 풀 크기는 record.md 측정 환경 |
| HikariCP pending | 20 | 9.8 | 83 | 0보다 크면 커넥션 대기 |
| HikariCP acquire max (ms) | 976.0 | - | 83 | |
| 처리 중 요청 수 / 최장 (ms) | 30 / 574.5 | 17.2 / - | 36 | 서버 안 동시 요청 |
| process CPU | 0.190 | 0.124 | 73 | 0~1 |
| system CPU | 0.793 | 0.644 | 15 | 0~1 |

## 누적 (측정 구간 증분)

| 지표 | 시작 | 끝 | 증분 | 요청당 |
|---|---|---|---|---|
| GC 횟수 | 34 | 122 | 88 | 0.012 |
| GC 일시정지 합 (ms) | 263.0 | 772.0 | 509.0 | 0.070 |
| 할당량 (MB) | 5442.0 | 26422.0 | 20980.0 | 2.887 |
| old gen 승격량 (MB) | 22.0 | 22.0 | 0.0 | 0.000 |
| HikariCP timeout | 0 | 0 | 0 | 0.000 |
| 커넥션 보유 평균 (ms) | - | - | 147.1 | - |

## 리포지토리 호출

| repository.method | 호출 증분 | 요청당 | mean ms |
|---|---|---|---|
| CourseRepository.findCapacitiesByArea | 7268 | 1.000 | 13.1 |

## 캐시

| 캐시 | hit | miss | pending | put | removal | 적중률 |
|---|---|---|---|---|---|---|
| general-education-courses | 7268 | 0 | 0 | 0 | 0 | 100.0% |
| major-courses | 0 | 0 | 0 | 0 | 0 | - |

## Redis

| 명령 | 호출 증분 | 요청당 | mean ms | max ms |
|---|---|---|---|---|
| GET | 7268 | 1.000 | 93.55 | 752.9 |

## 타임라인

| offset_s | heap_used_mb | gc_pause_ms(증분) | gc_pause_max_ms | threads_blocked | hikari_active | hikari_pending | http_active | process_cpu |
|---|---|---|---|---|---|---|---|---|
| 0 | 258.2 | 0.0 | 37.0 | 0 | 0 | 0 | 0 | 0.000 |
| 5 | 260.2 | 0.0 | 37.0 | 0 | 0 | 0 | 0 | 0.001 |
| 10 | 292.3 | 8.0 | 37.0 | 0 | 1 | 0 | 1 | 0.090 |
| 15 | 257.2 | 30.0 | 37.0 | 0 | 9 | 0 | 10 | 0.148 |
| 21 | 409.8 | 13.0 | 37.0 | 0 | 10 | 4 | 14 | 0.145 |
| 26 | 388.4 | 22.0 | 37.0 | 0 | 10 | 9 | 19 | 0.126 |
| 31 | 371.1 | 24.0 | 37.0 | 0 | 10 | 14 | 24 | 0.164 |
| 36 | 361.8 | 18.0 | 37.0 | 0 | 10 | 18 | 30 | 0.167 |
| 42 | 108.3 | 22.0 | 37.0 | 0 | 10 | 19 | 29 | 0.178 |
| 47 | 447.6 | 16.0 | 37.0 | 0 | 10 | 18 | 28 | 0.166 |
| 52 | 114.0 | 36.0 | 37.0 | 0 | 10 | 18 | 28 | 0.169 |
| 57 | 128.2 | 34.0 | 37.0 | 0 | 10 | 19 | 29 | 0.166 |
| 62 | 196.4 | 33.0 | 37.0 | 0 | 9 | 17 | 28 | 0.174 |
| 68 | 265.8 | 19.0 | 37.0 | 0 | 10 | 19 | 30 | 0.175 |
| 73 | 446.0 | 25.0 | 37.0 | 0 | 10 | 19 | 29 | 0.190 |
| 78 | 276.0 | 22.0 | 37.0 | 0 | 10 | 19 | 30 | 0.185 |
| 83 | 113.7 | 20.0 | 37.0 | 0 | 10 | 20 | 30 | 0.186 |
| 88 | 228.5 | 15.0 | 37.0 | 0 | 10 | 19 | 29 | 0.179 |
| 94 | 237.6 | 19.0 | 37.0 | 0 | 10 | 18 | 29 | 0.170 |
| 99 | 310.7 | 12.0 | 37.0 | 0 | 10 | 17 | 27 | 0.136 |
| 104 | 414.0 | 44.0 | 37.0 | 0 | 10 | 11 | 21 | 0.177 |
| 109 | 265.8 | 22.0 | 21.0 | 0 | 10 | 6 | 16 | 0.111 |
| 114 | 109.9 | 27.0 | 21.0 | 0 | 10 | 1 | 11 | 0.148 |
| 120 | 397.5 | 20.0 | 21.0 | 0 | 5 | 0 | 6 | 0.145 |
| 125 | 215.3 | 8.0 | 21.0 | 0 | 0 | 0 | 0 | 0.106 |
| 130 | 217.3 | 0.0 | 21.0 | 0 | 0 | 0 | 0 | 0.001 |
| 136 | 217.3 | 0.0 | 21.0 | 0 | 0 | 0 | 0 | 0.000 |
| 141 | 219.3 | 0.0 | 21.0 | 0 | 0 | 0 | 0 | 0.000 |
| 146 | 219.3 | 0.0 | 21.0 | 0 | 0 | 0 | 0 | 0.000 |
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
{
"phase": "measure",
"target": "general-education",
"endpoint": "GET /api/v1/courses/general-education?course-area={영역}",
"condition": {
"vus": 30,
"steady_state_duration": "1m",
"ramp_up": "30s",
"ramp_down": "30s",
"total_duration": "2m",
"db_cache": "warm",
"app_cache": "없음",
"user_count": 1000,
"area_rotation": "교양 13개 영역 순환 (성능 시드 5개 3,015~3,249건 + 앱 시드만 8개 8~56건)"
},
"requests": 2006,
"rps": 16.706912475042383,
"failed_rate": 0,
"checks_rate": 1,
"checks": [
{
"name": "status is 200",
"passes": 2006,
"fails": 0
},
{
"name": "body is not empty",
"passes": 2006,
"fails": 0
},
{
"name": "generalEducationCourseResponses가 실려 있다",
"passes": 2006,
"fails": 0
}
],
"duration_ms": {
"med": 1375.6675,
"p95": 2419.0022499999995,
"p99": 2783.3271,
"max": 4266.435
},
"waiting_ms": {
"med": 1369.7510000000002,
"p95": 2382.1542499999996,
"p99": 2764.9380499999997,
"max": 4256.474
},
"bytes_received": 1151642129
}
Loading
Loading