feat(report): 처리량(TPS) 지표 추가
- /admin/report에 throughput(초당 버킷): 접수/완결 최대 TPS, 완결 평균 TPS(활성구간), 활성 초수 - 보고서 화면에 🚀 처리량(TPS) 섹션(지연시간 아래) + 드라이버 부하 기준 주의 문구 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -148,6 +148,18 @@ class AdminController(
|
||||
AND t.created_at >= r.received_at -- 인과 정합(접수≤순번) 행만: BMI 재사용 등 시계 역전 건 제외
|
||||
""".trimIndent())
|
||||
|
||||
// 처리량(TPS) — 초 단위 버킷의 최대/평균. 접수(수용) vs 완결(처리) 관측치.
|
||||
// active_secs = 완결이 있었던 초 개수 → settled_avg는 활성 구간 평균(유휴 제외).
|
||||
val tps = jdbc.queryForMap(
|
||||
"""
|
||||
WITH recv AS (SELECT received_at/1000 AS s, count(*) c FROM raw_message WHERE received_at > 0 GROUP BY received_at/1000),
|
||||
done AS (SELECT updated_at/1000 AS s, count(*) c FROM transfer WHERE status='ACCC' GROUP BY updated_at/1000)
|
||||
SELECT COALESCE((SELECT max(c) FROM recv),0) AS received_peak,
|
||||
COALESCE((SELECT max(c) FROM done),0) AS settled_peak,
|
||||
COALESCE((SELECT round(avg(c)) FROM done),0) AS settled_avg,
|
||||
COALESCE((SELECT count(*) FROM done),0) AS active_secs
|
||||
""".trimIndent())
|
||||
|
||||
// 기관별 송·수신 집계(ACCC 기준) + 현재 잔액
|
||||
val byInstitution = jdbc.queryForList(
|
||||
"""
|
||||
@@ -172,6 +184,7 @@ class AdminController(
|
||||
),
|
||||
"amount" to amt,
|
||||
"latency" to lat,
|
||||
"throughput" to tps,
|
||||
"byInstitution" to byInstitution,
|
||||
)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user