Skip to content

Commit bbb4af6

Browse files
feat: SSE 지표 추가
1 parent a12d9c3 commit bbb4af6

File tree

1 file changed

+69
-0
lines changed

1 file changed

+69
-0
lines changed

README.md

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -552,6 +552,33 @@ SSE 이벤트 전송 (connect, content, complete, error)
552552

553553
## 🔧 최근 업데이트 사항
554554

555+
### v1.9.0 (2024-01-28) - SSE 커넥션 모니터링 및 최적화 시스템 구축
556+
- **SSE 커넥션 풀 최적화를 위한 모니터링 시스템**:
557+
- SSE 연결 생명주기 추적 및 메트릭 수집
558+
- 연결당 메모리 사용량 측정 및 분석
559+
- 커넥션 풀 효율성 지표 수집 (히트율, 미스율)
560+
- 연결 생성/종료/타임아웃/에러 상세 추적
561+
- **새로운 SSE 커넥션 메트릭**:
562+
- `sse_connections_total`: SSE 연결 총 생성 횟수
563+
- `sse_connections_active`: 현재 활성 SSE 연결 수
564+
- `sse_connection_lifetime`: SSE 연결 생명주기 시간
565+
- `sse_connection_memory_usage_bytes`: 연결당 메모리 사용량
566+
- `sse_connection_pool_hits_total`: 커넥션 풀 히트 횟수
567+
- `sse_connection_pool_misses_total`: 커넥션 풀 미스 횟수
568+
- `sse_connection_creation_duration`: 커넥션 생성 시간
569+
- `sse_connection_timeouts_total`: 타임아웃 발생 횟수
570+
- `sse_connection_errors_total`: 에러 발생 횟수
571+
- **메모리 모니터링 강화**:
572+
- SSE API 처리 중 실시간 메모리 사용량 측정
573+
- 메모리 피크 발생 시 자동 경고 로그
574+
- JVM 힙 메모리와 SSE 연결 수 상관관계 분석
575+
- GC 발생 빈도와 SSE 연결 패턴 연관성 추적
576+
- **프로메테우스/그라파나 연동**:
577+
- SSE 커넥션 최적화 전용 알림 규칙 설정
578+
- 메모리 사용률 임계값 기반 자동 알림
579+
- 커넥션 풀 효율성 모니터링 대시보드
580+
- 부하 테스트 시나리오별 성능 지표 수집
581+
555582
### v1.8.0 (2024-01-27) - 카카오 OAuth 로그인 시스템 구축
556583
- **카카오 OAuth 로그인 구현**:
557584
- HttpOnly 쿠키 기반 보안 인증 시스템
@@ -741,6 +768,17 @@ cd thefirsttake
741768
- `sse_connections_total`: SSE 연결 총 횟수
742769
- `sse_disconnections_total`: SSE 연결 해제 총 횟수
743770
- `sse_connection_duration`: SSE 연결 지속 시간
771+
- `sse_api_total_response_duration`: SSE API 전체 응답 시간
772+
- `sse_api_memory_usage_bytes`: SSE API 메모리 사용량
773+
- `sse_api_memory_peak_total`: 메모리 피크 발생 횟수
774+
- `sse_connections_active`: 현재 활성 SSE 연결 수
775+
- `sse_connection_lifetime`: SSE 연결 생명주기 시간
776+
- `sse_connection_memory_usage_bytes`: 연결당 메모리 사용량
777+
- `sse_connection_pool_hits_total`: 커넥션 풀 히트 횟수
778+
- `sse_connection_pool_misses_total`: 커넥션 풀 미스 횟수
779+
- `sse_connection_creation_duration`: 커넥션 생성 시간
780+
- `sse_connection_timeouts_total`: 타임아웃 발생 횟수
781+
- `sse_connection_errors_total`: 에러 발생 횟수
744782
- `llm_api_calls_total`: 외부 LLM API 호출 총 횟수
745783
- `llm_api_success_total`: LLM API 호출 성공 횟수
746784
- `llm_api_failure_total`: LLM API 호출 실패 횟수
@@ -796,6 +834,35 @@ cd TheFirstTake-backend/thefirsttake
796834
- **API 호출 로그**: 상품 검색 API 호출 결과 및 이미지 URL 처리 로그
797835
- **에러 추적**: 상세한 에러 로그 및 스택 트레이스
798836
- **메시지 저장 로그**: AI 응답 및 상품 이미지 저장 상태 추적
837+
- **SSE 커넥션 모니터링**: 실시간 연결 상태 및 메모리 사용량 추적
838+
- **성능 메트릭**: Prometheus 기반 상세 성능 지표 수집
839+
- **알림 시스템**: 메모리 사용률 및 커넥션 풀 효율성 기반 자동 알림
840+
841+
### 🔍 SSE 커넥션 최적화 모니터링
842+
843+
#### 핵심 지표
844+
- **연결당 메모리 사용량**: SSE 연결 1개당 평균 메모리 소비량
845+
- **커넥션 풀 효율성**: 히트율/미스율을 통한 연결 재사용 패턴 분석
846+
- **메모리 피크 추적**: 80% 이상 메모리 사용 시 자동 경고
847+
- **GC 패턴 분석**: SSE 연결과 가비지 컬렉션 발생 빈도 상관관계
848+
849+
#### 부하 테스트 시나리오
850+
```bash
851+
# SSE 연결 100개 생성하여 메모리 영향도 측정
852+
for i in {1..100}; do
853+
curl -N "http://localhost:8000/api/chat/rooms/$i/messages/stream?user_input=테스트" &
854+
done
855+
856+
# 30초 후 메트릭 확인
857+
curl -s "http://localhost:9090/api/v1/query?query=sse_connections_active"
858+
curl -s "http://localhost:9090/api/v1/query?query=jvm_memory_used_bytes{area=\"heap\"}"
859+
```
860+
861+
#### 최적화 목표
862+
- **연결당 메모리**: 0.5MB → 0.1MB (80% 감소)
863+
- **최대 동시 연결**: 1,000개 → 10,000개 (10배 증가)
864+
- **커넥션 생성 시간**: 200ms → 50ms (75% 감소)
865+
- **커넥션 풀 히트율**: 0% → 80% (80% 증가)
799866

800867
## 🔍 주요 기술적 특징
801868

@@ -814,6 +881,8 @@ cd TheFirstTake-backend/thefirsttake
814881
- **무한 스크롤**: 페이지네이션을 통한 메모리 효율적인 메시지 조회
815882
- **Redis 큐**: 비동기 메시지 처리로 응답 속도 향상
816883
- **S3 이미지 저장**: CDN을 통한 빠른 이미지 로딩
884+
- **SSE 커넥션 모니터링**: 실시간 연결 상태 추적으로 메모리 효율성 향상
885+
- **메트릭 기반 최적화**: Prometheus 지표를 통한 데이터 기반 성능 개선
817886

818887
## 🤝 기여하기
819888

0 commit comments

Comments
 (0)