상태 JSON 파일의 워커 수 및 요청 통계 업데이트, 모델 정보 API에 처리 시간 모니터링 추가, 세션 풀 상태를 대시보드에 표시하도록 개선하였습니다. Jetson 전용 GPU 정보 수집 기능을 추가하였으며, 로그 파일에 서버 프로세스 ID 변경 사항을 반영하였습니다.

This commit is contained in:
AGX 2025-08-29 02:19:45 +09:00
parent 29f0de65e1
commit bb3c5e61e3
8 changed files with 262 additions and 256 deletions

View File

@ -355,6 +355,8 @@ async def remove_background(
@router.get("/api/v1/model")
async def get_model_info():
"""모델 정보 반환 (클라이언트 헬스체크 호환)"""
start_time = time.time()
try:
# 현재 사용 가능한 모델 목록
models = [
@ -378,6 +380,15 @@ async def get_model_info():
}
]
processing_time = time.time() - start_time
# 모니터링 통계 업데이트
monitoring_data.update_api_stats(
endpoint="/api/v1/model",
success=True,
response_time=processing_time * 1000 # ms로 변환
)
return {
"success": True,
"models": models,
@ -390,6 +401,16 @@ async def get_model_info():
except Exception as e:
logger.error(f"모델 정보 조회 실패: {e}")
# 모니터링 통계 업데이트
processing_time = time.time() - start_time
monitoring_data.update_api_stats(
endpoint="/api/v1/model",
success=False,
response_time=processing_time * 1000,
error=str(e)
)
raise HTTPException(status_code=500, detail=f"모델 정보 조회 실패: {str(e)}")

View File

@ -28,14 +28,14 @@ class Settings(BaseSettings):
JETSON_TEMP_THRESHOLD: int = 75 # Celsius
# Session pool settings
SIMPLE_LAMA_SESSIONS: int = 2 if IS_JETSON else 4
MIGAN_SESSIONS: int = 2 if IS_JETSON else 4
SIMPLE_LAMA_SESSIONS: int = 2 if IS_JETSON else 3
MIGAN_SESSIONS: int = 2 if IS_JETSON else 3
REMBG_SESSIONS: int = 1 if IS_JETSON else 2
# Worker settings (Jetson은 더 적은 워커 사용)
MAX_WORKERS: int = 4 if IS_JETSON else 12
MIN_WORKERS: int = 1 if IS_JETSON else 4
WORKER_TIMEOUT: int = 300 # 5 minutes
MAX_WORKERS: int = 6 if IS_JETSON else 16
MIN_WORKERS: int = 2 if IS_JETSON else 8
WORKER_TIMEOUT: int = 120 # 2 minutes
# VRAM management (Jetson은 더 보수적인 설정)
VRAM_THRESHOLD_HIGH: float = 0.7 if IS_JETSON else 0.85 # 70% for Jetson, 85% for x86

View File

@ -120,10 +120,43 @@ class MonitoringData:
**gpu_monitor.get_gpu_memory_info(),
"utilization": gpu_monitor.get_gpu_utilization()
}
# Jetson의 경우 추가 GPU 정보
if settings.IS_JETSON:
jetson_gpu_info = gpu_monitor.get_jetson_specific_info()
if jetson_gpu_info:
# GPU 온도 정보
if jetson_gpu_info.get("temperature"):
temps = jetson_gpu_info["temperature"]
# 가장 높은 온도를 GPU 온도로 사용
if temps:
gpu_temp = max(temps.values()) if temps else 0
gpu_info["temperature"] = gpu_temp
else:
gpu_info["temperature"] = "미지원"
else:
gpu_info["temperature"] = "미지원"
# GPU 클럭 정보
gpu_freq = jetson_gpu_info.get("gpu_frequency")
if gpu_freq is not None:
gpu_info["clock_speed"] = gpu_freq
else:
gpu_info["clock_speed"] = "미지원"
else:
# x86 시스템의 경우 NVML을 통해 온도/클럭 정보 시도
try:
# 여기에 x86 GPU 정보 추가 로직을 구현할 수 있음
gpu_info["temperature"] = "미지원"
gpu_info["clock_speed"] = "미지원"
except:
gpu_info["temperature"] = "미지원"
gpu_info["clock_speed"] = "미지원"
logger.info("GPU 정보 수집 완료")
except Exception as e:
logger.warning(f"GPU 정보 조회 실패: {e}")
gpu_info = {"total": 0, "used": 0, "free": 0, "usage_percent": 0, "utilization": 0}
gpu_info = {"total": 0, "used": 0, "free": 0, "usage_percent": 0, "utilization": 0, "temperature": "오류", "clock_speed": "오류"}
# 시스템 메모리 정보 (안전하게 가져오기)
system_memory = {}
@ -673,10 +706,6 @@ HTML_TEMPLATE = """
<span class="metric-label">활성 워커:</span>
<span class="metric-value" id="worker-count">-</span>
</div>
<div class="metric">
<span class="metric-label">세션 :</span>
<span class="metric-value" id="session-pool">-</span>
</div>
<div class="metric">
<span class="metric-label">대기열:</span>
<span class="metric-value" id="queue-size">-</span>
@ -687,6 +716,26 @@ HTML_TEMPLATE = """
</div>
</div>
<div class="card">
<h3>🔄 세션 상태</h3>
<div class="metric">
<span class="metric-label">Simple LAMA:</span>
<span class="metric-value" id="session-lama">-</span>
</div>
<div class="metric">
<span class="metric-label">MIGAN:</span>
<span class="metric-value" id="session-migan">-</span>
</div>
<div class="metric">
<span class="metric-label">RemBG:</span>
<span class="metric-value" id="session-rembg">-</span>
</div>
<div class="metric">
<span class="metric-label"> 세션:</span>
<span class="metric-value" id="session-total">-</span>
</div>
</div>
<div class="card">
<h3>📊 API 통계</h3>
<div class="metric">
@ -1005,13 +1054,26 @@ HTML_TEMPLATE = """
// GPU 정보 업데이트
document.getElementById('gpu-memory').textContent = (data.gpu?.usage_percent || 0).toFixed(1) + '%';
document.getElementById('gpu-util').textContent = (data.gpu?.utilization || 0).toFixed(1) + '%';
document.getElementById('gpu-temp').textContent = (data.jetson?.temperature?.gpu || 0).toFixed(1) + '°C';
document.getElementById('gpu-clock').textContent = (data.jetson?.gpu_frequency || 0).toFixed(0) + 'MHz';
// GPU 온도 표시 (지원 여부에 따라)
const gpuTemp = data.gpu?.temperature;
if (typeof gpuTemp === 'number') {
document.getElementById('gpu-temp').textContent = gpuTemp.toFixed(1) + '°C';
} else {
document.getElementById('gpu-temp').textContent = gpuTemp || '미지원';
}
// GPU 클럭 표시 (지원 여부에 따라)
const gpuClock = data.gpu?.clock_speed;
if (typeof gpuClock === 'number') {
document.getElementById('gpu-clock').textContent = gpuClock.toFixed(0) + 'MHz';
} else {
document.getElementById('gpu-clock').textContent = gpuClock || '미지원';
}
// 워커 정보 업데이트
if (data.workers) {
document.getElementById('worker-count').textContent = data.workers.total_workers || 0;
document.getElementById('session-pool').textContent = Object.keys(data.sessions || {}).length;
document.getElementById('queue-size').textContent = data.workers.queue_size || 0;
document.getElementById('worker-status').textContent = data.workers.running ? '실행 중' : '중지됨';
@ -1024,6 +1086,43 @@ HTML_TEMPLATE = """
}
}
// 세션 상세 정보 업데이트
if (data.sessions) {
// Simple LAMA 세션
const lamaSession = data.sessions['simple-lama'] || data.sessions['simple_lama'] || {};
const lamaTotalSessions = lamaSession.total || 0;
const lamaInUse = lamaSession.in_use || 0;
const lamaAvailable = lamaSession.available || (lamaTotalSessions - lamaInUse);
document.getElementById('session-lama').textContent = `${lamaInUse}/${lamaTotalSessions} 사용중`;
// MIGAN 세션
const miganSession = data.sessions['migan'] || {};
const miganTotalSessions = miganSession.total || 0;
const miganInUse = miganSession.in_use || 0;
const miganAvailable = miganSession.available || (miganTotalSessions - miganInUse);
document.getElementById('session-migan').textContent = `${miganInUse}/${miganTotalSessions} 사용중`;
// RemBG 세션
const rembgSession = data.sessions['rembg'] || {};
const rembgTotalSessions = rembgSession.total || 0;
const rembgInUse = rembgSession.in_use || 0;
const rembgAvailable = rembgSession.available || (rembgTotalSessions - rembgInUse);
document.getElementById('session-rembg').textContent = `${rembgInUse}/${rembgTotalSessions} 사용중`;
// 세션
const totalSessions = lamaTotalSessions + miganTotalSessions + rembgTotalSessions;
const totalInUse = lamaInUse + miganInUse + rembgInUse;
document.getElementById('session-total').textContent = `${totalInUse}/${totalSessions} 사용중`;
console.log("세션 풀 상태:", data.sessions);
} else {
// 세션 데이터가 없는 경우 기본값 표시
document.getElementById('session-lama').textContent = '0/0 사용중';
document.getElementById('session-migan').textContent = '0/0 사용중';
document.getElementById('session-rembg').textContent = '0/0 사용중';
document.getElementById('session-total').textContent = '0/0 사용중';
}
// API 통계 업데이트
if (data.api_stats) {
document.getElementById('total-requests').textContent = data.api_stats.total_requests || 0;

View File

@ -1,226 +1,97 @@
INFO: Started server process [1328887]
2025-08-29 01:38:38,985 - uvicorn.error - INFO - Started server process [1328887]
INFO: Started server process [1333986]
2025-08-29 02:18:38,188 - uvicorn.error - INFO - Started server process [1333986]
INFO: Waiting for application startup.
2025-08-29 01:38:38,986 - uvicorn.error - INFO - Waiting for application startup.
2025-08-29 01:38:38,987 - main - INFO - 🚀 인페인팅 서버 시작 중...
2025-08-29 01:38:38,987 - main - INFO - ✅ 공유 객체를 app.state에 저장 완료
2025-08-29 01:38:38,987 - main - INFO - 🔄 상태 저장 백그라운드 작업 생성 중...
2025-08-29 01:38:38,987 - main - INFO - ✅ 상태 저장 백그라운드 작업 생성 완료
2025-08-29 01:38:38,987 - app.core.session_pool - INFO - Initializing session pools...
2025-08-29 01:38:38,987 - app.core.session_pool - INFO - Initializing 2 sessions for simple_lama
2025-08-29 01:38:38,988 - main - INFO - 🔄 상태 저장 백그라운드 작업 시작됨
2025-08-29 01:38:38,989 - main - INFO - 상태 저장 완료 #1: 01:38:38
2025-08-29 01:38:39,089 - app.core.session_pool - INFO - Created session simple_lama_0
2025-08-29 01:38:39,190 - app.core.session_pool - INFO - Created session simple_lama_1
2025-08-29 01:38:39,191 - app.core.session_pool - INFO - Initializing 2 sessions for migan
2025-08-29 01:38:39,292 - app.core.session_pool - INFO - Created session migan_0
2025-08-29 01:38:39,393 - app.core.session_pool - INFO - Created session migan_1
2025-08-29 01:38:39,394 - app.core.session_pool - INFO - Initializing 1 sessions for rembg
2025-08-29 01:38:39,495 - app.core.session_pool - INFO - Created session rembg_0
2025-08-29 01:38:39,495 - app.core.session_pool - INFO - Session pools initialized successfully
2025-08-29 01:38:39,496 - main - INFO - ✅ 세션 풀 초기화 완료
2025-08-29 01:38:39,496 - app.core.worker_manager - INFO - Starting worker manager...
2025-08-29 01:38:39,497 - app.core.worker_manager - INFO - Worker manager started with 1 workers
2025-08-29 01:38:39,497 - main - INFO - ✅ 워커 매니저 시작 완료
2025-08-29 01:38:39,497 - main - INFO - 🎉 인페인팅 서버 시작 완료!
2025-08-29 02:18:38,189 - uvicorn.error - INFO - Waiting for application startup.
2025-08-29 02:18:38,190 - main - INFO - 🚀 인페인팅 서버 시작 중...
2025-08-29 02:18:38,190 - main - INFO - ✅ 공유 객체를 app.state에 저장 완료
2025-08-29 02:18:38,190 - main - INFO - 🔄 상태 저장 백그라운드 작업 생성 중...
2025-08-29 02:18:38,190 - main - INFO - ✅ 상태 저장 백그라운드 작업 생성 완료
2025-08-29 02:18:38,190 - app.core.session_pool - INFO - Initializing session pools...
2025-08-29 02:18:38,190 - app.core.session_pool - INFO - Initializing 2 sessions for simple_lama
2025-08-29 02:18:38,191 - main - INFO - 🔄 상태 저장 백그라운드 작업 시작됨
2025-08-29 02:18:38,192 - main - INFO - 상태 저장 완료 #1: 02:18:38
2025-08-29 02:18:38,292 - app.core.session_pool - INFO - Created session simple_lama_0
2025-08-29 02:18:38,393 - app.core.session_pool - INFO - Created session simple_lama_1
2025-08-29 02:18:38,394 - app.core.session_pool - INFO - Initializing 2 sessions for migan
2025-08-29 02:18:38,495 - app.core.session_pool - INFO - Created session migan_0
2025-08-29 02:18:38,597 - app.core.session_pool - INFO - Created session migan_1
2025-08-29 02:18:38,597 - app.core.session_pool - INFO - Initializing 1 sessions for rembg
2025-08-29 02:18:38,698 - app.core.session_pool - INFO - Created session rembg_0
2025-08-29 02:18:38,699 - app.core.session_pool - INFO - Session pools initialized successfully
2025-08-29 02:18:38,699 - main - INFO - ✅ 세션 풀 초기화 완료
2025-08-29 02:18:38,699 - app.core.worker_manager - INFO - Starting worker manager...
2025-08-29 02:18:38,700 - app.core.worker_manager - INFO - Worker manager started with 2 workers
2025-08-29 02:18:38,700 - main - INFO - ✅ 워커 매니저 시작 완료
2025-08-29 02:18:38,700 - main - INFO - 🎉 인페인팅 서버 시작 완료!
INFO: Application startup complete.
2025-08-29 01:38:39,498 - uvicorn.error - INFO - Application startup complete.
2025-08-29 02:18:38,701 - uvicorn.error - INFO - Application startup complete.
INFO: Uvicorn running on http://0.0.0.0:8008 (Press CTRL+C to quit)
2025-08-29 01:38:39,500 - uvicorn.error - INFO - Uvicorn running on http://0.0.0.0:8008 (Press CTRL+C to quit)
2025-08-29 01:38:39,993 - main - INFO - 상태 저장 완료 #2: 01:38:39
INFO: 127.0.0.1:57950 - "GET /health HTTP/1.1" 200 OK
2025-08-29 01:38:40,997 - main - INFO - 상태 저장 완료 #3: 01:38:40
2025-08-29 01:38:42,001 - main - INFO - 상태 저장 완료 #4: 01:38:41
2025-08-29 01:38:43,005 - main - INFO - 상태 저장 완료 #5: 01:38:43
2025-08-29 01:38:44,009 - main - INFO - 상태 저장 완료 #6: 01:38:44
2025-08-29 01:38:45,013 - main - INFO - 상태 저장 완료 #7: 01:38:45
2025-08-29 01:38:46,016 - main - INFO - 상태 저장 완료 #8: 01:38:46
2025-08-29 01:38:47,020 - main - INFO - 상태 저장 완료 #9: 01:38:47
2025-08-29 01:38:48,024 - main - INFO - 상태 저장 완료 #10: 01:38:48
2025-08-29 01:38:49,028 - main - INFO - 상태 저장 완료 #11: 01:38:49
2025-08-29 01:38:50,031 - main - INFO - 상태 저장 완료 #12: 01:38:50
2025-08-29 01:38:51,034 - main - INFO - 상태 저장 완료 #13: 01:38:51
2025-08-29 01:38:52,037 - main - INFO - 상태 저장 완료 #14: 01:38:52
2025-08-29 01:38:53,040 - main - INFO - 상태 저장 완료 #15: 01:38:53
INFO: 127.0.0.1:46584 - "GET /api/v1/model HTTP/1.1" 200 OK
2025-08-29 01:38:54,043 - main - INFO - 상태 저장 완료 #16: 01:38:54
2025-08-29 01:38:55,046 - main - INFO - 상태 저장 완료 #17: 01:38:55
2025-08-29 01:38:56,050 - main - INFO - 상태 저장 완료 #18: 01:38:56
2025-08-29 01:38:57,055 - main - INFO - 상태 저장 완료 #19: 01:38:57
2025-08-29 01:38:58,059 - main - INFO - 상태 저장 완료 #20: 01:38:58
2025-08-29 01:38:59,063 - main - INFO - 상태 저장 완료 #21: 01:38:59
2025-08-29 01:39:00,068 - main - INFO - 상태 저장 완료 #22: 01:39:00
2025-08-29 01:39:01,071 - main - INFO - 상태 저장 완료 #23: 01:39:01
2025-08-29 01:39:02,076 - main - INFO - 상태 저장 완료 #24: 01:39:02
2025-08-29 01:39:03,078 - main - INFO - 상태 저장 완료 #25: 01:39:03
2025-08-29 01:39:04,083 - main - INFO - 상태 저장 완료 #26: 01:39:04
INFO: 127.0.0.1:38784 - "GET /api/v1/model HTTP/1.1" 200 OK
2025-08-29 01:39:05,087 - main - INFO - 상태 저장 완료 #27: 01:39:05
2025-08-29 01:39:06,092 - main - INFO - 상태 저장 완료 #28: 01:39:06
2025-08-29 01:39:07,098 - main - INFO - 상태 저장 완료 #29: 01:39:07
2025-08-29 01:39:08,102 - main - INFO - 상태 저장 완료 #30: 01:39:08
2025-08-29 01:39:09,105 - main - INFO - 상태 저장 완료 #31: 01:39:09
2025-08-29 01:39:10,109 - main - INFO - 상태 저장 완료 #32: 01:39:10
2025-08-29 01:39:11,113 - main - INFO - 상태 저장 완료 #33: 01:39:11
2025-08-29 01:39:12,117 - main - INFO - 상태 저장 완료 #34: 01:39:12
INFO: 127.0.0.1:49464 - "GET /health HTTP/1.1" 200 OK
2025-08-29 01:39:13,121 - main - INFO - 상태 저장 완료 #35: 01:39:13
2025-08-29 01:39:14,125 - main - INFO - 상태 저장 완료 #36: 01:39:14
2025-08-29 01:39:15,129 - main - INFO - 상태 저장 완료 #37: 01:39:15
2025-08-29 01:39:16,133 - main - INFO - 상태 저장 완료 #38: 01:39:16
2025-08-29 01:39:17,138 - main - INFO - 상태 저장 완료 #39: 01:39:17
2025-08-29 01:39:18,142 - main - INFO - 상태 저장 완료 #40: 01:39:18
2025-08-29 01:39:19,148 - main - INFO - 상태 저장 완료 #41: 01:39:19
2025-08-29 01:39:20,151 - main - INFO - 상태 저장 완료 #42: 01:39:20
2025-08-29 01:39:21,156 - main - INFO - 상태 저장 완료 #43: 01:39:21
2025-08-29 01:39:22,161 - main - INFO - 상태 저장 완료 #44: 01:39:22
2025-08-29 01:39:23,165 - main - INFO - 상태 저장 완료 #45: 01:39:23
2025-08-29 01:39:24,170 - main - INFO - 상태 저장 완료 #46: 01:39:24
2025-08-29 01:39:25,175 - main - INFO - 상태 저장 완료 #47: 01:39:25
2025-08-29 01:39:26,185 - main - INFO - 상태 저장 완료 #48: 01:39:26
2025-08-29 01:39:27,189 - main - INFO - 상태 저장 완료 #49: 01:39:27
2025-08-29 01:39:28,193 - main - INFO - 상태 저장 완료 #50: 01:39:28
2025-08-29 01:39:29,197 - main - INFO - 상태 저장 완료 #51: 01:39:29
2025-08-29 01:39:30,201 - main - INFO - 상태 저장 완료 #52: 01:39:30
2025-08-29 01:39:31,206 - main - INFO - 상태 저장 완료 #53: 01:39:31
2025-08-29 01:39:32,211 - main - INFO - 상태 저장 완료 #54: 01:39:32
2025-08-29 01:39:33,215 - main - INFO - 상태 저장 완료 #55: 01:39:33
2025-08-29 01:39:34,220 - main - INFO - 상태 저장 완료 #56: 01:39:34
2025-08-29 01:39:35,224 - main - INFO - 상태 저장 완료 #57: 01:39:35
2025-08-29 01:39:36,230 - main - INFO - 상태 저장 완료 #58: 01:39:36
2025-08-29 01:39:37,235 - main - INFO - 상태 저장 완료 #59: 01:39:37
2025-08-29 01:39:38,240 - main - INFO - 상태 저장 완료 #60: 01:39:38
2025-08-29 01:39:39,245 - main - INFO - 상태 저장 완료 #61: 01:39:39
2025-08-29 01:39:42,539 - main - INFO - 상태 저장 완료 #62: 01:39:42
2025-08-29 01:39:43,544 - main - INFO - 상태 저장 완료 #63: 01:39:43
2025-08-29 01:39:44,548 - main - INFO - 상태 저장 완료 #64: 01:39:44
2025-08-29 01:39:45,553 - main - INFO - 상태 저장 완료 #65: 01:39:45
2025-08-29 01:39:46,557 - main - INFO - 상태 저장 완료 #66: 01:39:46
2025-08-29 01:39:47,560 - main - INFO - 상태 저장 완료 #67: 01:39:47
2025-08-29 01:39:48,565 - main - INFO - 상태 저장 완료 #68: 01:39:48
2025-08-29 01:39:49,569 - main - INFO - 상태 저장 완료 #69: 01:39:49
2025-08-29 01:39:50,575 - main - INFO - 상태 저장 완료 #70: 01:39:50
2025-08-29 01:39:51,580 - main - INFO - 상태 저장 완료 #71: 01:39:51
2025-08-29 01:39:52,584 - main - INFO - 상태 저장 완료 #72: 01:39:52
2025-08-29 01:39:53,589 - main - INFO - 상태 저장 완료 #73: 01:39:53
2025-08-29 01:39:54,593 - main - INFO - 상태 저장 완료 #74: 01:39:54
2025-08-29 01:39:55,597 - main - INFO - 상태 저장 완료 #75: 01:39:55
2025-08-29 01:39:56,601 - main - INFO - 상태 저장 완료 #76: 01:39:56
2025-08-29 01:39:57,605 - main - INFO - 상태 저장 완료 #77: 01:39:57
2025-08-29 01:39:58,609 - main - INFO - 상태 저장 완료 #78: 01:39:58
2025-08-29 01:39:59,613 - main - INFO - 상태 저장 완료 #79: 01:39:59
2025-08-29 01:40:00,617 - main - INFO - 상태 저장 완료 #80: 01:40:00
2025-08-29 01:40:01,621 - main - INFO - 상태 저장 완료 #81: 01:40:01
2025-08-29 01:40:05,576 - main - INFO - 상태 저장 완료 #82: 01:40:05
2025-08-29 01:40:06,580 - main - INFO - 상태 저장 완료 #83: 01:40:06
2025-08-29 01:40:07,585 - main - INFO - 상태 저장 완료 #84: 01:40:07
2025-08-29 01:40:08,589 - main - INFO - 상태 저장 완료 #85: 01:40:08
2025-08-29 01:40:09,593 - main - INFO - 상태 저장 완료 #86: 01:40:09
2025-08-29 01:40:10,597 - main - INFO - 상태 저장 완료 #87: 01:40:10
2025-08-29 01:40:11,602 - main - INFO - 상태 저장 완료 #88: 01:40:11
2025-08-29 01:40:12,606 - main - INFO - 상태 저장 완료 #89: 01:40:12
2025-08-29 01:40:13,610 - main - INFO - 상태 저장 완료 #90: 01:40:13
2025-08-29 01:40:14,613 - main - INFO - 상태 저장 완료 #91: 01:40:14
2025-08-29 01:40:15,617 - main - INFO - 상태 저장 완료 #92: 01:40:15
2025-08-29 01:40:16,622 - main - INFO - 상태 저장 완료 #93: 01:40:16
2025-08-29 01:40:17,627 - main - INFO - 상태 저장 완료 #94: 01:40:17
2025-08-29 01:40:18,632 - main - INFO - 상태 저장 완료 #95: 01:40:18
2025-08-29 01:40:19,636 - main - INFO - 상태 저장 완료 #96: 01:40:19
2025-08-29 01:40:20,640 - main - INFO - 상태 저장 완료 #97: 01:40:20
2025-08-29 01:40:21,644 - main - INFO - 상태 저장 완료 #98: 01:40:21
2025-08-29 01:40:22,648 - main - INFO - 상태 저장 완료 #99: 01:40:22
2025-08-29 01:40:23,652 - main - INFO - 상태 저장 완료 #100: 01:40:23
2025-08-29 01:40:24,656 - main - INFO - 상태 저장 완료 #101: 01:40:24
2025-08-29 01:40:28,611 - main - INFO - 상태 저장 완료 #102: 01:40:28
2025-08-29 01:40:29,615 - main - INFO - 상태 저장 완료 #103: 01:40:29
2025-08-29 01:40:30,619 - main - INFO - 상태 저장 완료 #104: 01:40:30
2025-08-29 01:40:31,624 - main - INFO - 상태 저장 완료 #105: 01:40:31
2025-08-29 01:40:32,628 - main - INFO - 상태 저장 완료 #106: 01:40:32
2025-08-29 01:40:33,632 - main - INFO - 상태 저장 완료 #107: 01:40:33
2025-08-29 01:40:34,636 - main - INFO - 상태 저장 완료 #108: 01:40:34
2025-08-29 01:40:35,641 - main - INFO - 상태 저장 완료 #109: 01:40:35
2025-08-29 01:40:36,646 - main - INFO - 상태 저장 완료 #110: 01:40:36
2025-08-29 01:40:37,649 - main - INFO - 상태 저장 완료 #111: 01:40:37
2025-08-29 01:40:38,653 - main - INFO - 상태 저장 완료 #112: 01:40:38
2025-08-29 01:40:39,657 - main - INFO - 상태 저장 완료 #113: 01:40:39
2025-08-29 01:40:40,661 - main - INFO - 상태 저장 완료 #114: 01:40:40
2025-08-29 01:40:41,665 - main - INFO - 상태 저장 완료 #115: 01:40:41
2025-08-29 01:40:42,669 - main - INFO - 상태 저장 완료 #116: 01:40:42
2025-08-29 01:40:43,673 - main - INFO - 상태 저장 완료 #117: 01:40:43
2025-08-29 01:40:44,678 - main - INFO - 상태 저장 완료 #118: 01:40:44
2025-08-29 01:40:45,682 - main - INFO - 상태 저장 완료 #119: 01:40:45
2025-08-29 01:40:46,686 - main - INFO - 상태 저장 완료 #120: 01:40:46
2025-08-29 01:40:47,691 - main - INFO - 상태 저장 완료 #121: 01:40:47
2025-08-29 01:40:51,646 - main - INFO - 상태 저장 완료 #122: 01:40:51
2025-08-29 01:40:52,652 - main - INFO - 상태 저장 완료 #123: 01:40:52
2025-08-29 01:40:53,656 - main - INFO - 상태 저장 완료 #124: 01:40:53
2025-08-29 01:40:54,661 - main - INFO - 상태 저장 완료 #125: 01:40:54
2025-08-29 01:40:55,665 - main - INFO - 상태 저장 완료 #126: 01:40:55
2025-08-29 01:40:56,670 - main - INFO - 상태 저장 완료 #127: 01:40:56
2025-08-29 01:40:57,675 - main - INFO - 상태 저장 완료 #128: 01:40:57
2025-08-29 01:40:58,680 - main - INFO - 상태 저장 완료 #129: 01:40:58
2025-08-29 01:40:59,684 - main - INFO - 상태 저장 완료 #130: 01:40:59
2025-08-29 01:41:00,689 - main - INFO - 상태 저장 완료 #131: 01:41:00
2025-08-29 01:41:01,694 - main - INFO - 상태 저장 완료 #132: 01:41:01
2025-08-29 01:41:02,698 - main - INFO - 상태 저장 완료 #133: 01:41:02
2025-08-29 01:41:03,703 - main - INFO - 상태 저장 완료 #134: 01:41:03
2025-08-29 01:41:04,707 - main - INFO - 상태 저장 완료 #135: 01:41:04
2025-08-29 01:41:05,712 - main - INFO - 상태 저장 완료 #136: 01:41:05
2025-08-29 01:41:06,716 - main - INFO - 상태 저장 완료 #137: 01:41:06
2025-08-29 01:41:07,720 - main - INFO - 상태 저장 완료 #138: 01:41:07
2025-08-29 01:41:08,724 - main - INFO - 상태 저장 완료 #139: 01:41:08
2025-08-29 01:41:09,728 - main - INFO - 상태 저장 완료 #140: 01:41:09
2025-08-29 01:41:10,733 - main - INFO - 상태 저장 완료 #141: 01:41:10
2025-08-29 01:41:14,678 - main - INFO - 상태 저장 완료 #142: 01:41:14
2025-08-29 01:41:15,683 - main - INFO - 상태 저장 완료 #143: 01:41:15
2025-08-29 01:41:16,687 - main - INFO - 상태 저장 완료 #144: 01:41:16
2025-08-29 01:41:17,691 - main - INFO - 상태 저장 완료 #145: 01:41:17
2025-08-29 01:41:18,695 - main - INFO - 상태 저장 완료 #146: 01:41:18
2025-08-29 01:41:19,700 - main - INFO - 상태 저장 완료 #147: 01:41:19
2025-08-29 01:41:20,705 - main - INFO - 상태 저장 완료 #148: 01:41:20
2025-08-29 01:41:21,709 - main - INFO - 상태 저장 완료 #149: 01:41:21
2025-08-29 01:41:22,713 - main - INFO - 상태 저장 완료 #150: 01:41:22
2025-08-29 01:41:23,717 - main - INFO - 상태 저장 완료 #151: 01:41:23
2025-08-29 01:41:24,721 - main - INFO - 상태 저장 완료 #152: 01:41:24
2025-08-29 01:41:25,726 - main - INFO - 상태 저장 완료 #153: 01:41:25
2025-08-29 01:41:26,730 - main - INFO - 상태 저장 완료 #154: 01:41:26
2025-08-29 01:41:27,735 - main - INFO - 상태 저장 완료 #155: 01:41:27
2025-08-29 01:41:28,740 - main - INFO - 상태 저장 완료 #156: 01:41:28
2025-08-29 01:41:29,743 - main - INFO - 상태 저장 완료 #157: 01:41:29
2025-08-29 01:41:30,745 - main - INFO - 상태 저장 완료 #158: 01:41:30
2025-08-29 01:41:31,750 - main - INFO - 상태 저장 완료 #159: 01:41:31
2025-08-29 01:41:32,755 - main - INFO - 상태 저장 완료 #160: 01:41:32
2025-08-29 01:41:33,759 - main - INFO - 상태 저장 완료 #161: 01:41:33
2025-08-29 01:41:37,714 - main - INFO - 상태 저장 완료 #162: 01:41:37
2025-08-29 01:41:38,719 - main - INFO - 상태 저장 완료 #163: 01:41:38
2025-08-29 01:41:39,723 - main - INFO - 상태 저장 완료 #164: 01:41:39
2025-08-29 01:41:40,727 - main - INFO - 상태 저장 완료 #165: 01:41:40
2025-08-29 01:41:41,733 - main - INFO - 상태 저장 완료 #166: 01:41:41
2025-08-29 01:41:42,737 - main - INFO - 상태 저장 완료 #167: 01:41:42
2025-08-29 01:41:43,741 - main - INFO - 상태 저장 완료 #168: 01:41:43
2025-08-29 01:41:44,745 - main - INFO - 상태 저장 완료 #169: 01:41:44
2025-08-29 01:41:45,750 - main - INFO - 상태 저장 완료 #170: 01:41:45
2025-08-29 01:41:46,754 - main - INFO - 상태 저장 완료 #171: 01:41:46
2025-08-29 01:41:47,758 - main - INFO - 상태 저장 완료 #172: 01:41:47
2025-08-29 01:41:48,764 - main - INFO - 상태 저장 완료 #173: 01:41:48
2025-08-29 01:41:49,768 - main - INFO - 상태 저장 완료 #174: 01:41:49
2025-08-29 01:41:50,772 - main - INFO - 상태 저장 완료 #175: 01:41:50
2025-08-29 01:41:51,776 - main - INFO - 상태 저장 완료 #176: 01:41:51
2025-08-29 01:41:52,780 - main - INFO - 상태 저장 완료 #177: 01:41:52
2025-08-29 01:41:53,785 - main - INFO - 상태 저장 완료 #178: 01:41:53
2025-08-29 01:41:54,790 - main - INFO - 상태 저장 완료 #179: 01:41:54
2025-08-29 01:41:55,794 - main - INFO - 상태 저장 완료 #180: 01:41:55
2025-08-29 01:41:56,799 - main - INFO - 상태 저장 완료 #181: 01:41:56
2025-08-29 01:42:00,749 - main - INFO - 상태 저장 완료 #182: 01:42:00
2025-08-29 01:42:01,754 - main - INFO - 상태 저장 완료 #183: 01:42:01
2025-08-29 01:42:02,758 - main - INFO - 상태 저장 완료 #184: 01:42:02
2025-08-29 01:42:03,763 - main - INFO - 상태 저장 완료 #185: 01:42:03
2025-08-29 01:42:04,766 - main - INFO - 상태 저장 완료 #186: 01:42:04
2025-08-29 01:42:05,769 - main - INFO - 상태 저장 완료 #187: 01:42:05
2025-08-29 01:42:06,772 - main - INFO - 상태 저장 완료 #188: 01:42:06
2025-08-29 01:42:07,774 - main - INFO - 상태 저장 완료 #189: 01:42:07
2025-08-29 01:42:08,781 - main - INFO - 상태 저장 완료 #190: 01:42:08
2025-08-29 01:42:09,786 - main - INFO - 상태 저장 완료 #191: 01:42:09
2025-08-29 01:42:10,791 - main - INFO - 상태 저장 완료 #192: 01:42:10
2025-08-29 01:42:11,795 - main - INFO - 상태 저장 완료 #193: 01:42:11
2025-08-29 01:42:12,799 - main - INFO - 상태 저장 완료 #194: 01:42:12
2025-08-29 02:18:38,703 - uvicorn.error - INFO - Uvicorn running on http://0.0.0.0:8008 (Press CTRL+C to quit)
2025-08-29 02:18:39,196 - main - INFO - 상태 저장 완료 #2: 02:18:39
INFO: 127.0.0.1:33390 - "GET /health HTTP/1.1" 200 OK
2025-08-29 02:18:40,199 - main - INFO - 상태 저장 완료 #3: 02:18:40
2025-08-29 02:18:41,202 - main - INFO - 상태 저장 완료 #4: 02:18:41
2025-08-29 02:18:42,206 - main - INFO - 상태 저장 완료 #5: 02:18:42
2025-08-29 02:18:43,210 - main - INFO - 상태 저장 완료 #6: 02:18:43
2025-08-29 02:18:44,215 - main - INFO - 상태 저장 완료 #7: 02:18:44
2025-08-29 02:18:45,220 - main - INFO - 상태 저장 완료 #8: 02:18:45
2025-08-29 02:18:46,224 - main - INFO - 상태 저장 완료 #9: 02:18:46
2025-08-29 02:18:47,228 - main - INFO - 상태 저장 완료 #10: 02:18:47
2025-08-29 02:18:48,232 - main - INFO - 상태 저장 완료 #11: 02:18:48
2025-08-29 02:18:49,236 - main - INFO - 상태 저장 완료 #12: 02:18:49
2025-08-29 02:18:50,240 - main - INFO - 상태 저장 완료 #13: 02:18:50
2025-08-29 02:18:51,245 - main - INFO - 상태 저장 완료 #14: 02:18:51
2025-08-29 02:18:52,249 - main - INFO - 상태 저장 완료 #15: 02:18:52
2025-08-29 02:18:53,254 - main - INFO - 상태 저장 완료 #16: 02:18:53
2025-08-29 02:18:54,258 - main - INFO - 상태 저장 완료 #17: 02:18:54
2025-08-29 02:18:55,262 - main - INFO - 상태 저장 완료 #18: 02:18:55
INFO: 127.0.0.1:40968 - "GET /api/v1/model HTTP/1.1" 200 OK
INFO: 127.0.0.1:40980 - "GET /api/v1/server-config HTTP/1.1" 200 OK
INFO: 127.0.0.1:40994 - "GET /health HTTP/1.1" 200 OK
2025-08-29 02:18:56,267 - main - INFO - 상태 저장 완료 #19: 02:18:56
2025-08-29 02:18:57,272 - main - INFO - 상태 저장 완료 #20: 02:18:57
2025-08-29 02:18:58,276 - main - INFO - 상태 저장 완료 #21: 02:18:58
2025-08-29 02:18:59,280 - main - INFO - 상태 저장 완료 #22: 02:18:59
2025-08-29 02:19:00,285 - main - INFO - 상태 저장 완료 #23: 02:19:00
2025-08-29 02:19:01,289 - main - INFO - 상태 저장 완료 #24: 02:19:01
2025-08-29 02:19:02,294 - main - INFO - 상태 저장 완료 #25: 02:19:02
2025-08-29 02:19:03,299 - main - INFO - 상태 저장 완료 #26: 02:19:03
2025-08-29 02:19:04,303 - main - INFO - 상태 저장 완료 #27: 02:19:04
2025-08-29 02:19:05,308 - main - INFO - 상태 저장 완료 #28: 02:19:05
2025-08-29 02:19:06,313 - main - INFO - 상태 저장 완료 #29: 02:19:06
2025-08-29 02:19:07,317 - main - INFO - 상태 저장 완료 #30: 02:19:07
2025-08-29 02:19:08,321 - main - INFO - 상태 저장 완료 #31: 02:19:08
2025-08-29 02:19:09,326 - main - INFO - 상태 저장 완료 #32: 02:19:09
2025-08-29 02:19:10,330 - main - INFO - 상태 저장 완료 #33: 02:19:10
2025-08-29 02:19:11,335 - main - INFO - 상태 저장 완료 #34: 02:19:11
2025-08-29 02:19:12,340 - main - INFO - 상태 저장 완료 #35: 02:19:12
2025-08-29 02:19:13,345 - main - INFO - 상태 저장 완료 #36: 02:19:13
2025-08-29 02:19:14,349 - main - INFO - 상태 저장 완료 #37: 02:19:14
2025-08-29 02:19:15,353 - main - INFO - 상태 저장 완료 #38: 02:19:15
2025-08-29 02:19:16,358 - main - INFO - 상태 저장 완료 #39: 02:19:16
2025-08-29 02:19:17,363 - main - INFO - 상태 저장 완료 #40: 02:19:17
2025-08-29 02:19:18,368 - main - INFO - 상태 저장 완료 #41: 02:19:18
2025-08-29 02:19:19,372 - main - INFO - 상태 저장 완료 #42: 02:19:19
2025-08-29 02:19:20,376 - main - INFO - 상태 저장 완료 #43: 02:19:20
2025-08-29 02:19:21,382 - main - INFO - 상태 저장 완료 #44: 02:19:21
2025-08-29 02:19:22,386 - main - INFO - 상태 저장 완료 #45: 02:19:22
2025-08-29 02:19:23,390 - main - INFO - 상태 저장 완료 #46: 02:19:23
2025-08-29 02:19:24,395 - main - INFO - 상태 저장 완료 #47: 02:19:24
2025-08-29 02:19:25,404 - main - INFO - 상태 저장 완료 #48: 02:19:25
2025-08-29 02:19:26,408 - main - INFO - 상태 저장 완료 #49: 02:19:26
2025-08-29 02:19:27,413 - main - INFO - 상태 저장 완료 #50: 02:19:27
2025-08-29 02:19:28,417 - main - INFO - 상태 저장 완료 #51: 02:19:28
2025-08-29 02:19:29,422 - main - INFO - 상태 저장 완료 #52: 02:19:29
2025-08-29 02:19:30,429 - main - INFO - 상태 저장 완료 #53: 02:19:30
2025-08-29 02:19:31,433 - main - INFO - 상태 저장 완료 #54: 02:19:31
2025-08-29 02:19:32,438 - main - INFO - 상태 저장 완료 #55: 02:19:32
2025-08-29 02:19:33,443 - main - INFO - 상태 저장 완료 #56: 02:19:33
2025-08-29 02:19:34,447 - main - INFO - 상태 저장 완료 #57: 02:19:34
2025-08-29 02:19:35,455 - main - INFO - 상태 저장 완료 #58: 02:19:35
2025-08-29 02:19:36,459 - main - INFO - 상태 저장 완료 #59: 02:19:36
2025-08-29 02:19:37,464 - main - INFO - 상태 저장 완료 #60: 02:19:37
2025-08-29 02:19:38,467 - main - INFO - 상태 저장 완료 #61: 02:19:38
2025-08-29 02:19:41,734 - main - INFO - 상태 저장 완료 #62: 02:19:41
2025-08-29 02:19:42,740 - main - INFO - 상태 저장 완료 #63: 02:19:42
2025-08-29 02:19:43,745 - main - INFO - 상태 저장 완료 #64: 02:19:43
2025-08-29 02:19:44,749 - main - INFO - 상태 저장 완료 #65: 02:19:44

View File

@ -1 +1 @@
1328887
1333986

View File

@ -1,6 +1,6 @@
INFO: Started server process [1328918]
INFO: Started server process [1334030]
INFO: Waiting for application startup.
Fan control not available
INFO: Application startup complete.
INFO: Uvicorn running on http://0.0.0.0:8888 (Press CTRL+C to quit)
INFO: 127.0.0.1:42340 - "GET /api/simple HTTP/1.1" 200 OK
INFO: 127.0.0.1:46548 - "GET /api/simple HTTP/1.1" 200 OK

View File

@ -1 +1 @@
1328918
1334030

View File

@ -1,12 +1,19 @@
{
"worker_status": {
"running": true,
"total_workers": 1,
"total_workers": 2,
"queue_size": 0,
"workers_by_status": {
"idle": [
{
"id": "worker_f42e10e1",
"id": "worker_9c36a239",
"status": "idle",
"task_count": 0,
"error_count": 0,
"last_task_at": null
},
{
"id": "worker_fc828cfc",
"status": "idle",
"task_count": 0,
"error_count": 0,
@ -43,32 +50,40 @@
"success_rate": 100.0,
"endpoint_usage": {
"GET /health": 2,
"GET /api/v1/model": 2
"GET /api/v1/model": 1,
"GET /api/v1/server-config": 1
},
"endpoint_stats": {
"GET /health": {
"count": 2,
"avg_time": 0.001588582992553711,
"min_time": 0.0013887882232666016,
"max_time": 0.0017883777618408203,
"avg_time": 0.0015218257904052734,
"min_time": 0.0012848377227783203,
"max_time": 0.0017588138580322266,
"current_concurrent": 0
},
"GET /api/v1/model": {
"count": 2,
"avg_time": 0.0014955997467041016,
"min_time": 0.0014739036560058594,
"max_time": 0.0015172958374023438,
"count": 1,
"avg_time": 0.0016770362854003906,
"min_time": 0.0016770362854003906,
"max_time": 0.0016770362854003906,
"current_concurrent": 0
},
"GET /api/v1/server-config": {
"count": 1,
"avg_time": 0.001375436782836914,
"min_time": 0.001375436782836914,
"max_time": 0.001375436782836914,
"current_concurrent": 0
}
},
"average_response_time": 0.0015420913696289062,
"min_response_time": 0.0013887882232666016,
"max_response_time": 0.0017883777618408203,
"average_response_time": 0.0015240311622619629,
"min_response_time": 0.0012848377227783203,
"max_response_time": 0.0017588138580322266,
"current_concurrent": 0,
"max_concurrent": 1,
"requests_per_second": 0.018707118250962246,
"uptime": 213.82235074043274,
"requests_per_second": 0.06008683953274193,
"uptime": 66.57031774520874,
"recent_errors": []
},
"timestamp": 1756399332.7971911
"timestamp": 1756401584.7473466
}