docs: Phase 1-2 트러블슈팅 문서 업데이트
- 파일명 변경: 250805-06_happybell80_AI응답개선Phase1-5.md - Phase 2 캐시 인프라 구축 내용 추가 - Lock TTL 메모리 관리 구현 상세 - 서버팀 검증 결과 포함 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
4f12984d3c
commit
68f4d5e3aa
@ -1,6 +1,6 @@
|
||||
# AI 응답 단조로움 해결 - Phase 1 구현
|
||||
# AI 응답 단조로움 해결 - Phase 1-5 구현
|
||||
|
||||
**날짜**: 2025-08-05
|
||||
**날짜**: 2025-08-05 ~ 2025-08-06
|
||||
**작업자**: happybell80 & Claude
|
||||
**관련 서비스**: rb10508_micro
|
||||
|
||||
@ -147,4 +147,139 @@ response = await loop.run_in_executor(
|
||||
- 실제 감정 정보 활용
|
||||
|
||||
**개선된 응답 예시**:
|
||||
"정말 그렇게 느껴지시나요? AI 기술의 발전 속도가 어마어마한 건 저도 매일 피부로 느끼고 있어요..."
|
||||
"정말 그렇게 느껴지시나요? AI 기술의 발전 속도가 어마어마한 건 저도 매일 피부로 느끼고 있어요..."
|
||||
|
||||
---
|
||||
|
||||
# Phase 2: 캐시 인프라 구축
|
||||
|
||||
**날짜**: 2025-08-06
|
||||
**시작 시간**: 오전 9시 00분
|
||||
|
||||
## 오전 9시 00분
|
||||
|
||||
### 서버팀 사전 점검
|
||||
|
||||
**Phase 2 계획 검토**:
|
||||
- 철학적 기반 확인 (기억-감정-윤리 삼각형)
|
||||
- 트러블슈팅 경험 반영 (async/await, 권한 문제)
|
||||
- Lock TTL 메모리 관리 개선 요청
|
||||
|
||||
**서버 상태 점검**:
|
||||
```
|
||||
✅ ChromaDB 권한: 999:999 정상
|
||||
✅ 디스크 공간: 369G 사용 가능 (충분)
|
||||
✅ skill-embedding: 8015 포트 정상 작동
|
||||
✅ rb10508_micro: 126.2MiB, healthy
|
||||
```
|
||||
|
||||
## 오전 9시 30분
|
||||
|
||||
### Phase 2 구현
|
||||
|
||||
**목표**: 안전한 캐시 인프라 구축 + 중복 방지
|
||||
|
||||
**구현 내용**:
|
||||
|
||||
1. **config.py 수정**
|
||||
```python
|
||||
# 대화 캐시 설정 (Phase 2-5)
|
||||
USE_CONVERSATION_CACHE: bool = False
|
||||
CACHE_DISTANCE_THRESHOLD: float = 0.3
|
||||
CACHE_MAX_ITEMS_PER_USER: int = 1000
|
||||
CACHE_TTL_DAYS: int = 30
|
||||
CACHE_LOCK_TTL_SECONDS: int = 300 # 5분
|
||||
```
|
||||
|
||||
2. **memory.py 개선**
|
||||
- TTL 기반 Lock 관리 시스템
|
||||
- 예외 처리 강화된 컬렉션 초기화
|
||||
- 디버그 로깅 추가
|
||||
|
||||
**핵심 구현 - Lock TTL 관리**:
|
||||
```python
|
||||
async def get_user_lock(self, user_id: str) -> asyncio.Lock:
|
||||
"""TTL 기반 Lock 관리 - 메모리 누수 방지"""
|
||||
current_time = time.time()
|
||||
|
||||
# 5분 미사용 Lock 정리
|
||||
for uid, last_used in list(self._lock_cleanup_time.items()):
|
||||
if current_time - last_used > settings.CACHE_LOCK_TTL_SECONDS:
|
||||
self._cache_locks.pop(uid, None)
|
||||
self._lock_cleanup_time.pop(uid, None)
|
||||
if settings.DEBUG:
|
||||
logger.debug(f"[CACHE] Lock 정리: {uid}")
|
||||
|
||||
# Lock이 없으면 생성
|
||||
if user_id not in self._cache_locks:
|
||||
self._cache_locks[user_id] = asyncio.Lock()
|
||||
|
||||
# 사용 시간 업데이트
|
||||
self._lock_cleanup_time[user_id] = current_time
|
||||
return self._cache_locks[user_id]
|
||||
```
|
||||
|
||||
**예외 처리 강화**:
|
||||
```python
|
||||
if settings.USE_CONVERSATION_CACHE:
|
||||
try:
|
||||
self.conversation_cache = self.client.get_or_create_collection(
|
||||
name=f"{settings.ROBING_ID}_conversation_cache",
|
||||
metadata={
|
||||
"type": "conversation_cache",
|
||||
"version": "1.0",
|
||||
"max_items": settings.CACHE_MAX_ITEMS_PER_USER
|
||||
},
|
||||
embedding_function=self.embedding_function
|
||||
)
|
||||
logger.info("Conversation cache 컬렉션 생성 성공")
|
||||
except Exception as e:
|
||||
logger.error(f"Conversation cache 컬렉션 생성 실패: {e}")
|
||||
self.conversation_cache = None
|
||||
```
|
||||
|
||||
## 오전 9시 52분
|
||||
|
||||
### Phase 2 배포 및 검증
|
||||
|
||||
**배포 결과**:
|
||||
- Git push 완료
|
||||
- Gitea Actions 자동 배포
|
||||
|
||||
**서버팀 검증 결과**:
|
||||
```
|
||||
✅ 메모리 사용량: 126.2MiB → 108.4MiB (-17.8MiB)
|
||||
✅ CPU 사용률: 0.13% → 0.05%
|
||||
✅ 헬스체크: 정상
|
||||
✅ ChromaDB: 1097728 bytes 업데이트
|
||||
✅ USE_CONVERSATION_CACHE: False (안전)
|
||||
```
|
||||
|
||||
## Phase 2 교훈
|
||||
|
||||
1. **서버팀 피드백의 가치**
|
||||
- Lock TTL 메모리 누수 방지 제안
|
||||
- 예외 처리 강화 요구
|
||||
- 사전 점검으로 안전한 배포
|
||||
|
||||
2. **점진적 롤아웃의 중요성**
|
||||
- 기본값 False로 기존 시스템 보호
|
||||
- 기능 토글로 위험 최소화
|
||||
- 단계별 활성화 가능
|
||||
|
||||
3. **예상치 못한 개선**
|
||||
- 코드 추가했는데 메모리 사용량 감소
|
||||
- import 정리 효과로 추정
|
||||
- 최적화의 부수 효과
|
||||
|
||||
## Phase 2 성과
|
||||
|
||||
✅ **캐시 인프라 구축 완료**
|
||||
- conversation_cache 컬렉션 준비
|
||||
- TTL 기반 Lock 시스템 구현
|
||||
- 메모리 누수 방지 메커니즘
|
||||
|
||||
✅ **안전한 배포**
|
||||
- 기존 기능 무영향
|
||||
- 메모리 사용량 오히려 감소
|
||||
- Phase 3 진행 준비 완료
|
||||
Loading…
x
Reference in New Issue
Block a user