디스크가 가득 참 / 데이터베이스가 무한정 증가함
대시보드의 스토리지 상태 카드에 경고가 표시되고, 데이터베이스 행이 박스가 보유해야 할 데이터에 비해 큽니다. 오래된 행을 삭제하거나 보존 기간을 줄여도 파일 크기는 줄어들지 않습니다.
원인: 오래된 행은 일정에 따라 삭제되지만, 이전 릴리스에서 생성된 데이터베이스는 해제된 페이지를 내부 free-list에 보관합니다. 이 페이지는 디스크로 반환되지 않으므로 파일은 가장 컸던 크기에 머무릅니다. 박스를 업데이트해도 이 상태는 바뀌지 않습니다. 현재 릴리스에서 생성된 데이터베이스는 각 보존 스윕 후 해제된 공간을 반환합니다.
압축 스크립트를 실행하고 측정 결과를 읽으세요. 스크립트는 무엇이든 변경하기 전에 결과를 보고합니다.
-
설치와 업데이트에 사용하는 릴리스 번들 디렉터리로 이동합니다.
-
다음을 실행합니다:
Terminal window sudo ./compact-db.sh -
보고 내용을 읽습니다: 데이터베이스 크기, free-list(회수할 수 있는 공간), 디스크의 여유 공간.
-
free-list가 크면 해결 단계로 진행합니다. 여기서 멈추려면 프롬프트에
N으로 답하세요. 아직 아무것도 변경되지 않았습니다.
회수할 공간이 100 MB 미만이고 데이터베이스가 이미 스스로 공간을 반환하고 있다면, 스크립트가 그렇게 알리고 종료합니다.
-
여유 공간을 확인합니다. 압축은 데이터베이스를 교체하기 전에 완전한 두 번째 사본을 쓰므로, 디스크에 최소한 데이터베이스 크기만큼의 여유 공간이 필요합니다. 스크립트가 이를 확인하고, 공간이 부족하면 시작을 거부합니다.
-
짧은 유지 관리 시간을 계획합니다. 스크립트가 전체 스택을 중지하므로 실행 중에는 추론이 멈춥니다. 큰 데이터베이스에서는 몇 분이 걸립니다.
-
릴리스 번들 디렉터리에서 스크립트를 실행하고 프롬프트에
y로 답합니다:Terminal window sudo ./compact-db.sh그러면 스크립트는:
- 설치 디렉터리(기본값
/opt/aiboard)의backups폴더에 데이터베이스 스냅샷을 만듭니다; - 스택을 중지합니다;
- 데이터베이스를 압축하고, 이후 해제된 공간을 반환하도록 전환합니다;
- 스택을 다시 시작합니다.
압축 중에는 중단하지 마세요.
- 설치 디렉터리(기본값
-
결과를 확인합니다. 스크립트가 이전·이후 크기와 회수된 공간을 출력합니다. 대시보드의 데이터베이스 행에 새 크기가 표시됩니다.
백엔드는 일정에 따라 오래된 데이터를 삭제합니다. 기본값은 다음과 같습니다:
| 데이터 | 보존 기간 | 설정 |
|---|---|---|
| 추론 기록(지연 시간, 처리량, 파이프라인 이벤트) | 1일 | InferenceObservability:RetentionDays |
| 요청 및 응답 페이로드 | 6시간 | InferenceObservability:PayloadRetentionHours |
| 추론 기록 행 상한 | 최신 5,000,000행 | InferenceObservability:MaxRows |
| 로그 페이지 항목 | 최신 10,000줄 | LoggingService:Retention:MaxEntries |
- 보존 기간을 제한된 상태로 유지하세요. 보존 기간이 길수록 데이터베이스가 커집니다.
- 행 상한을 평상시 데이터량보다 높게 유지하세요. 행 상한은 시간 윈도우 안에서도 최신 행만 남기므로 버스트가 디스크를 채우지 못합니다. 평상시 하루 데이터량보다 낮으면 시간 윈도우가 짧아집니다.
- 처리량 테스트에 주의하세요. 고속 쓰기 버스트가 파일을 부풀리는 원인입니다. 프로덕션 박스에서 고속 테스트를 계속 실행해 두지 마세요.
- 오래된 백업을 확인하세요. 업데이트할 때마다 최근 데이터베이스 백업 몇 개가
보관됩니다. 환경 변수의
AIBOARD_BACKUP_KEEP을 참조하세요.