Phase 3 트러블슈팅 추가: Docker 및 환경변수 설정 오류
- 24서버 개발자의 Docker 실수 사례 기록 - docker system prune -af로 전체 서비스 중단 - skill-embedding URL 오설정 문제 - 환경변수와 코드 구분 착각 - 해결 과정 및 교훈 정리
This commit is contained in:
parent
68f4d5e3aa
commit
f03d558793
@ -283,3 +283,125 @@ if settings.USE_CONVERSATION_CACHE:
|
||||
- 기존 기능 무영향
|
||||
- 메모리 사용량 오히려 감소
|
||||
- Phase 3 진행 준비 완료
|
||||
|
||||
---
|
||||
|
||||
# Phase 3: 지능형 캐시 저장 + TTL 관리
|
||||
|
||||
**날짜**: 2025-08-06
|
||||
**시작 시간**: 오전 10시 30분
|
||||
|
||||
## 오전 10시 30분
|
||||
|
||||
### Phase 3 구현
|
||||
|
||||
**목표**: 중복 방지, 사용자별 제한, TTL 관리
|
||||
|
||||
**구현 내용**:
|
||||
|
||||
1. **메모리 카운터 시스템**
|
||||
- 지연 로딩으로 성능 최적화
|
||||
- 사용자별 캐시 개수 실시간 추적
|
||||
|
||||
2. **store_conversation_cache 메서드**
|
||||
```python
|
||||
# 중복 체크 (유사도 0.1 미만은 스킵)
|
||||
if existing['distances'][0] and existing['distances'][0][0] < 0.1:
|
||||
logger.debug(f"[CONV_CACHE] 중복 캐시 스킵: {message[:50]}...")
|
||||
return
|
||||
```
|
||||
|
||||
3. **효율적 정리 메커니즘**
|
||||
- 1000개 초과 시 오래된 200개 삭제
|
||||
- 800개 유지로 빈번한 정리 방지
|
||||
|
||||
4. **백그라운드 저장**
|
||||
- brain.py에서 asyncio.create_task 활용
|
||||
- 응답 지연 없이 캐시 저장
|
||||
|
||||
5. **cleanup.py 스크립트**
|
||||
- 크론잡용 독립 실행 파일
|
||||
- TTL 만료 캐시 자동 정리
|
||||
|
||||
## 오전 11시 19분
|
||||
|
||||
### Phase 3 캐시 테스트 중 Docker 및 환경변수 설정 오류
|
||||
|
||||
**작성자**: Claude (51124 서버)
|
||||
|
||||
**발생한 실수들**:
|
||||
|
||||
1. **Docker 전체 컨테이너 삭제**
|
||||
```bash
|
||||
docker system prune -af # 치명적 실수!
|
||||
```
|
||||
- 모든 서비스 컨테이너 삭제됨
|
||||
- rb10508_micro, skill-embedding 등 전체 중단
|
||||
|
||||
2. **skill-embedding URL 오설정**
|
||||
- httpbin.org로 변경하여 Phase 3 테스트 차단
|
||||
- 올바른 설정: `SKILL_EMBEDDING_URL=http://172.17.0.1:8015`
|
||||
|
||||
3. **Docker 컨테이너 재생성 오류 반복**
|
||||
```bash
|
||||
# 잘못된 방법 (여러 번 반복)
|
||||
docker-compose up -d
|
||||
# Error: container name already in use
|
||||
```
|
||||
- 중지된 컨테이너 제거 없이 재생성 시도
|
||||
|
||||
4. **환경변수 vs 코드 구분 착각**
|
||||
- .env 파일을 코드로 착각
|
||||
- "코드를 수정할 수 없다"고 판단
|
||||
|
||||
**해결 과정**:
|
||||
|
||||
1. skill-embedding 서비스 복구
|
||||
2. 올바른 Docker 재시작 절차
|
||||
```bash
|
||||
docker-compose down
|
||||
docker-compose up -d
|
||||
```
|
||||
3. 환경변수 올바르게 설정
|
||||
4. Phase 3 캐시 기능 활성화 성공
|
||||
|
||||
**최종 테스트 결과**:
|
||||
- API 응답 정상 ✅
|
||||
- memory_stored: true ✅
|
||||
- ChromaDB에 대화 저장됨 ✅
|
||||
- skill-embedding 연결 정상 ✅
|
||||
- 응답 시간: 1.44초
|
||||
|
||||
## Phase 3 교훈
|
||||
|
||||
1. **Docker 안전 규칙**
|
||||
- `docker system prune -af`는 절대 금지
|
||||
- 컨테이너 재생성 시 반드시 down → up
|
||||
- 개별 컨테이너만 조작하기
|
||||
|
||||
2. **환경설정 이해**
|
||||
- .env 파일은 설정 파일 (코드 아님)
|
||||
- 서버 클로드는 .env 수정 가능
|
||||
- 환경변수 변경 후 컨테이너 재시작 필수
|
||||
|
||||
3. **서비스 의존성**
|
||||
- skill-embedding은 핵심 서비스
|
||||
- 잘못된 URL 설정 시 전체 기능 마비
|
||||
- 서비스 간 연결 확인 중요
|
||||
|
||||
## Phase 3 성과
|
||||
|
||||
✅ **캐시 저장 시스템 구축 완료**
|
||||
- 중복 방지 메커니즘 작동
|
||||
- 사용자별 1000개 제한 구현
|
||||
- TTL 기반 자동 정리 준비
|
||||
|
||||
✅ **성능 최적화**
|
||||
- 메모리 카운터로 빠른 조회
|
||||
- 백그라운드 저장으로 응답 지연 없음
|
||||
- 효율적 정리로 리소스 절약
|
||||
|
||||
✅ **운영 준비 완료**
|
||||
- cleanup.py 크론잡 준비
|
||||
- 모니터링 로그 추가
|
||||
- 안전한 에러 처리
|
||||
Loading…
x
Reference in New Issue
Block a user