Skip to content

/status API 성능 최적화 #123

@Seol-JY

Description

@Seol-JY

🔍 현재 성능 상태

/api/v1/users/status API에 대한 부하 테스트 결과, 성능 저하가 확인되었습니다. 특히 초당 요청이 90건을 넘어갈 때 데이터베이스 연결 및 쿼리 실행에서 명확한 병목 현상이 발견되었습니다.

📊 성능 측정 결과

지표 (Metric) 결과 (Result)
성공률 (Success Rate) 100.00% (✓ 72932, ✗ 0)
데이터 수신량 (Data Received) 77 MB (73 kB/s)
데이터 송신량 (Data Sent) 14 MB (13 kB/s)
오류율 (Error Rate) 0.00% (✓ 0, ✗ 36466)
요청 수 (Request Count) 36466 (34.53/s)
가상 사용자 (VUs) 1 (최소 0, 최대 300)
지표 (Metric) 평균 (avg) 최소 (min) 중간값 (med) 최대 (max) 90%
요청 차단 시간 (Request Blocked) 455.47µs 1µs 8µs 1.26s 12µs
연결 시간 (Connecting) 74.17µs 0s 0s 74.26ms 0s
요청 지속 시간 (Duration) 1.52s 126µs 364.03ms 20.83s 4.79s
응답 수신 시간 (Receiving) 221.53µs 10µs 104µs 40.61ms 269µs
요청 전송 시간 (Sending) 38.27µs 3µs 27µs 29.53ms 44µs
TLS 핸드셰이킹 (TLS Handshaking) 172.61µs 0s 0s 73.78ms 0s
대기 시간 (Waiting) 1.52s 0s 363.67ms 20.83s 4.79s
반복 지속 시간 (Iteration Duration) 2.26s 329.76ms 1.26s 21.29s 5.51s
응답 시간 (Response Time) 1516.59ms 20ms 356ms 20837ms 4814ms
Image

매트릭을 포함한 전체 측졍 결과는 노션 문서 에서 확인 가능합니다.

🎯 개선 목표

No response

🛣️ 영향받는 엔드포인트

이 API는 사용자 상태 확인에 핵심적으로 사용되며, 프론트엔드 애플리케이션에서 주기적으로 호출됨. 따라서 성능 개선이 전체 사용자 경험에 직접적인 영향을 줄 수 있음.

💡 개선 방안

  • N+1 쿼리 패턴 제거
  • 필요 시 단일 쿼리로 합치거나 JOIN 활용
  • 적절한 인덱스 추가
  • 집계 쿼리 적극 활용
  • 필요시 캐싱 도입

📝 비고

개선 이후 기존과 같은 부하 테스트를 통해 개선 전후 성능 비교를 진행할 예정입니다.

Metadata

Metadata

Assignees

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions