endpointp95, p99, error rate가 오른 요청을 같은 입력 조건으로
고정한다.
spancontroller, provider, DB, external API 시간을 trace ID로
나눈다.
profileflamegraph, heap snapshot, event loop lag로 병목 원인을
좁힌다.
comparebaseline과 배포 후 지표를 비교해 개선 근거를 남긴다.
01
성능 병목을 나누는 기준
p95 latency, heap, event loop delay, CPU profile, dependency
timing을 관측 지표, 병목 위치, 수정 범위로 나눠 검증합니다.
병목 위치02
Interceptor, APM, profiler의 책임 위치
성능 분석에서는 APM span, profiler snapshot, endpoint별 metrics,
알림 기준값를 실제 책임 위치에 연결합니다.
관측 지표03
성능 모니터링과 프로파일링의 실패 조건
평균 응답은 괜찮지만 특정 endpoint나 외부 의존성에서 tail
latency가 계속 늘어나면 실패 신호입니다. 병목 위치, 예외 로그,
재시도 가능 여부를 함께 남깁니다.
확장 정책04
p95와 trace로 남기는 개선 근거
마지막에는 profiling snapshot, trace waterfall, p95/p99 그래프,
개선 전후 비교 같은 증거를 남겨 trace ID, flamegraph, 개선 전후
지표가 같은 병목을 가리키는지 다시 확인합니다.
회귀 추적
책임
응답 시간, event loop delay, heap 사용량의 기준값을 먼저
정한다성능 모니터링은 느린 endpoint를 감으로 찾지 않도록 latency,
CPU, 메모리, 외부 의존성 시간을 같은 요청 ID로 묶어
비교합니다.
baseline
경계
NestJS interceptor와 metrics endpoint가 같은 요청을 가리키는지
확인Interceptor span, provider 실행 시간, DB query duration, 응답
코드를 한 trace 안에 남겨 병목 위치가 로그에서 분리되게
합니다.
trace span
Metrics 보호
메트릭 노출 누락과 profiler 오버헤드를 따로 검증/metrics가 보호되지 않거나 profiler가 운영 CPU를 잠식하는
상황을 부하 테스트와 알림 임계값으로 분리합니다.
알림 규칙
성능 모니터링과 프로파일링 검증 지점
정상 부하 기준대표 endpoint의 p95, DB query 시간, 외부 API latency가 목표값
안에 있고 trace가 한 요청 ID로 이어지는지 확인합니다.병목 재현 조건동시 요청 증가, 느린 DB 응답, event loop blocking을 따로 만들어
어떤 지표가 먼저 흔들리는지 비교합니다.알림과 회귀 지표p95/p99 상승, heap 증가, error rate 변화, 배포 전후 trace
waterfall을 함께 남겨 성능 회귀를 추적합니다.
성능 확장 점검
질문: p95 상승이 controller, provider, DB, 외부 API 중 어디에서 시작되는가
순서: 성능 지표와 병목 위치 정의 -> NestJS 요청 파이프라인에 메트릭 삽입 -> 메트릭 노출과 알림 임계값 검증
위험: 평균 응답 시간만 보면 tail latency, event loop blocking, profiler 오버헤드가 배포 뒤에야 드러납니다.