상태 JSON 파일의 워커 ID를 업데이트하고, API 요청 통계 및 성공률을 수정하였습니다. 세션 풀 관리 로직을 개선하여 유휴 세션을 주기적으로 제거하도록 하였으며, VRAM 사용량 로깅 기능을 추가하였습니다. GPU 메모리 정보를 가져오는 로직을 개선하고, 로그 파일에 서버 프로세스 ID 변경 사항을 반영하였습니다.

This commit is contained in:
AGX 2025-08-30 09:00:50 +09:00
parent 0467871e5b
commit 9aa46fac13
9 changed files with 1590 additions and 262 deletions

View File

@ -10,10 +10,12 @@ from typing import Dict, List, Optional, Any, Tuple
from enum import Enum from enum import Enum
from dataclasses import dataclass from dataclasses import dataclass
from contextlib import asynccontextmanager from contextlib import asynccontextmanager
from collections import defaultdict
from ..core.config import settings from ..core.config import settings
from ..utils.gpu_monitor import gpu_monitor from ..utils.gpu_monitor import gpu_monitor
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
@ -61,7 +63,6 @@ class SessionPool:
for model_type, (min_sessions, _) in self.model_configs.items(): for model_type, (min_sessions, _) in self.model_configs.items():
if min_sessions > 0: if min_sessions > 0:
logger.info(f"Pre-loading {min_sessions} sessions for {model_type.value}") logger.info(f"Pre-loading {min_sessions} sessions for {model_type.value}")
# Use asyncio.gather for concurrent session creation
tasks = [ tasks = [
self._create_session(model_type, f"{model_type.value}_{i}") self._create_session(model_type, f"{model_type.value}_{i}")
for i in range(min_sessions) for i in range(min_sessions)
@ -78,46 +79,33 @@ class SessionPool:
self._initialized = True self._initialized = True
# 유휴 세션 제거 작업 시작
if settings.SESSION_IDLE_TIMEOUT > 0: if settings.SESSION_IDLE_TIMEOUT > 0:
self._reaper_task = asyncio.create_task(self._reap_idle_sessions()) self._reaper_task = asyncio.create_task(self._reap_idle_sessions_task())
logger.info("Session pools initialized successfully") logger.info("Session pools initialized successfully")
async def _reap_idle_sessions(self): def _log_pool_status(self, event: str, model_type: str = "", reaped_info: str = ""):
"""유휴 세션을 주기적으로 제거하는 백그라운드 작업.""" try:
logger.info(f"Idle session reaper started. Timeout: {settings.SESSION_IDLE_TIMEOUT}s, Check Interval: 60s") gpu_info = gpu_monitor.get_gpu_memory_info()
while True: if not gpu_info or 'used' not in gpu_info:
await asyncio.sleep(60) # 1분마다 체크 vram_usage = "VRAM: N/A"
else:
vram_usage = f"VRAM: {(gpu_info['used'] / 1024):.1f}/{(gpu_info['total'] / 1024):.1f} GB ({gpu_info['usage_percent']:.1f}%)"
for model_type, pool in self.pools.items(): session_counts = ", ".join([f"{mt.value}: {len(p)}" for mt, p in self.pools.items()])
min_sessions, _ = self.model_configs[model_type]
if event == "create":
async with self.conditions[model_type]: log_message = f" Session Created ({model_type}). Status -> {session_counts} | {vram_usage}"
if len(pool) <= min_sessions: elif event == "reap":
continue log_message = f" Session Reaped ({reaped_info}). Status -> {session_counts} | {vram_usage}"
else:
# 사용 중이 아니고, 타임아웃이 지난 세션을 찾음 log_message = f" Pool Status ({event}) -> {session_counts} | {vram_usage}"
idle_sessions = [s for s in pool if s.is_idle(settings.SESSION_IDLE_TIMEOUT)]
# 제거할 세션 수 결정 (min_sessions 이하로는 줄이지 않음)
num_to_reap = min(len(idle_sessions), len(pool) - min_sessions)
if num_to_reap > 0:
sessions_to_reap = idle_sessions[:num_to_reap]
logger.info(f"Reaping {len(sessions_to_reap)} idle session(s) for {model_type.value}. Current pool size: {len(pool)}, Min size: {min_sessions}")
for session in sessions_to_reap:
pool.remove(session)
# 명시적으로 모델 객체를 삭제하여 GC가 메모리를 회수하도록 유도
del session.model
del session
# Notify any waiting tasks that pool state has changed
self.conditions[model_type].notify_all()
logger.info(log_message)
except Exception as e:
logger.warning(f"Failed to log memory status after session event '{event}': {e}")
async def _create_session(self, model_type: ModelType, session_id: str) -> ModelSession: async def _create_session(self, model_type: ModelType, session_id: str) -> ModelSession:
"""새로운 모델 세션을 생성합니다."""
logger.info(f"Creating new session {session_id} for {model_type.value}...") logger.info(f"Creating new session {session_id} for {model_type.value}...")
try: try:
model = await self._load_model(model_type) model = await self._load_model(model_type)
@ -128,79 +116,50 @@ class SessionPool:
created_at=time.time(), created_at=time.time(),
last_used=time.time() last_used=time.time()
) )
logger.info(f"Successfully created session {session.session_id}") logger.info(f"Successfully created session {session_id}")
self._log_pool_status("create", model_type.value)
return session return session
except Exception as e: except Exception as e:
logger.error(f"Failed to create session {session_id}: {e}", exc_info=True) logger.error(f"Failed to create session {session_id}: {e}", exc_info=True)
raise raise
async def _load_model(self, model_type: ModelType) -> Any: async def _load_model(self, model_type: ModelType) -> Any:
"""모델을 로드합니다."""
if model_type == ModelType.SIMPLE_LAMA: if model_type == ModelType.SIMPLE_LAMA:
return await self._load_simple_lama_model() from ..models.simple_lama import SimpleLamaInpainter
elif model_type == ModelType.MIGAN:
return await self._load_migan_model()
elif model_type == ModelType.REMBG:
return await asyncio.wait_for(self._load_rembg_model(), timeout=180) # 모델 다운로드 시간 고려
else:
raise ValueError(f"Unknown model type: {model_type}")
async def _load_simple_lama_model(self):
"""Simple LAMA 모델을 로드합니다."""
from ..models.simple_lama import SimpleLamaInpainter
try:
model = SimpleLamaInpainter( model = SimpleLamaInpainter(
model_path=settings.SIMPLE_LAMA_MODEL_PATH, model_path=settings.SIMPLE_LAMA_MODEL_PATH,
device="cuda" if settings.USE_CUDA else "cpu", device="cuda" if settings.USE_CUDA else "cpu",
fp16=settings.USE_FP16 fp16=settings.USE_FP16
) )
await model.load_model() elif model_type == ModelType.MIGAN:
logger.debug("Simple LAMA model instance created and loaded.") from ..models.migan import MiganInpainter
return model
except Exception as e:
logger.error(f"Failed to load Simple LAMA model: {e}", exc_info=True)
raise
async def _load_migan_model(self):
"""MIGAN 모델을 로드합니다."""
from ..models.migan import MiganInpainter
try:
model = MiganInpainter( model = MiganInpainter(
model_path=getattr(settings, 'MIGAN_ONNX_PATH', settings.MIGAN_MODEL_PATH), model_path=getattr(settings, 'MIGAN_ONNX_PATH', settings.MIGAN_MODEL_PATH),
device="cuda" if settings.USE_CUDA else "cpu", device="cuda" if settings.USE_CUDA else "cpu",
fp16=settings.USE_FP16, fp16=settings.USE_FP16,
use_cuda=settings.USE_CUDA use_cuda=settings.USE_CUDA
) )
await model.load_model() elif model_type == ModelType.REMBG:
logger.debug("MIGAN model instance created and loaded.") from ..models.rembg_model import RembgProcessor
return model
except Exception as e:
logger.error(f"Failed to load MIGAN model: {e}", exc_info=True)
raise
async def _load_rembg_model(self):
"""REMBG 모델을 로드합니다."""
from ..models.rembg_model import RembgProcessor
try:
model = RembgProcessor( model = RembgProcessor(
model_name=getattr(settings, 'REMBG_MODEL_NAME', 'birefnet-general-lite'), model_name=getattr(settings, 'REMBG_MODEL_NAME', 'birefnet-general-lite'),
device="cuda" if settings.USE_CUDA else "cpu", device="cuda" if settings.USE_CUDA else "cpu",
fp16=settings.USE_FP16, fp16=settings.USE_FP16,
local_rembg_model_path=getattr(settings, 'LOCAL_REMBG_MODEL_PATH', None) local_rembg_model_path=getattr(settings, 'LOCAL_REMBG_MODEL_PATH', None)
) )
await model.load_model() else:
logger.debug("RembgProcessor instance created and model pre-loaded.") raise ValueError(f"Unknown model type: {model_type}")
try:
await asyncio.wait_for(model.load_model(), timeout=180)
logger.debug(f"{model_type.value} model instance created and loaded.")
return model return model
except Exception as e: except Exception as e:
logger.error(f"Failed to load REMBG model: {e}", exc_info=True) logger.error(f"Failed to load {model_type.value} model: {e}", exc_info=True)
raise raise
@asynccontextmanager @asynccontextmanager
async def get_session(self, model_type: ModelType): async def get_session(self, model_type: ModelType):
"""세션을 가져와서 사용 후 반환합니다."""
session = await self._acquire_session(model_type) session = await self._acquire_session(model_type)
try: try:
yield session yield session
@ -209,13 +168,11 @@ class SessionPool:
await self._release_session(session) await self._release_session(session)
async def _acquire_session(self, model_type: ModelType) -> ModelSession: async def _acquire_session(self, model_type: ModelType) -> ModelSession:
"""사용 가능한 세션을 획득하거나, VRAM 여유 시 새로 생성합니다."""
condition = self.conditions[model_type] condition = self.conditions[model_type]
_, max_sessions = self.model_configs[model_type] _, max_sessions = self.model_configs[model_type]
while True: while True:
async with condition: async with condition:
# 1. 사용 가능한 세션 찾기
for session in self.pools[model_type]: for session in self.pools[model_type]:
if not session.in_use: if not session.in_use:
session.in_use = True session.in_use = True
@ -223,9 +180,7 @@ class SessionPool:
logger.debug(f"Acquired existing session {session.session_id}") logger.debug(f"Acquired existing session {session.session_id}")
return session return session
# 2. 세션을 새로 생성할 수 있는지 확인
if len(self.pools[model_type]) < max_sessions: if len(self.pools[model_type]) < max_sessions:
# 2-1. VRAM 여유 공간 확인
gpu_mem_info = gpu_monitor.get_gpu_memory_info() gpu_mem_info = gpu_monitor.get_gpu_memory_info()
free_vram_ratio = gpu_mem_info.get("free_ratio", 0) free_vram_ratio = gpu_mem_info.get("free_ratio", 0)
@ -235,13 +190,13 @@ class SessionPool:
logger.info(f"Attempting to create new session for {model_type.value}. Current size: {current_pool_size}, Max size: {max_sessions}") logger.info(f"Attempting to create new session for {model_type.value}. Current size: {current_pool_size}, Max size: {max_sessions}")
# Condition lock을 잠시 해제하고 세션 생성 (I/O 작업)
try: try:
new_session = await self._create_session(model_type, session_id) new_session = await self._create_session(model_type, session_id)
# 다시 lock을 잡고 풀에 추가 # 다시 lock을 잡고 풀에 추가
new_session.in_use = True new_session.in_use = True
new_session.mark_used() new_session.mark_used()
self.pools[model_type].append(new_session) self.pools[model_type].append(new_session)
self._log_pool_status("create", model_type.value) # 위치 변경
logger.info(f"Acquired new session {new_session.session_id} as VRAM is sufficient ({free_vram_ratio:.2f} > {settings.SESSION_VRAM_THRESHOLD:.2f})") logger.info(f"Acquired new session {new_session.session_id} as VRAM is sufficient ({free_vram_ratio:.2f} > {settings.SESSION_VRAM_THRESHOLD:.2f})")
return new_session return new_session
except Exception: except Exception:
@ -251,22 +206,18 @@ class SessionPool:
else: else:
logger.warning(f"Cannot create new session for {model_type.value}. VRAM threshold not met. (Free: {free_vram_ratio:.2f} <= Threshold: {settings.SESSION_VRAM_THRESHOLD:.2f})") logger.warning(f"Cannot create new session for {model_type.value}. VRAM threshold not met. (Free: {free_vram_ratio:.2f} <= Threshold: {settings.SESSION_VRAM_THRESHOLD:.2f})")
# 3. 대기
logger.debug(f"No available sessions or VRAM for {model_type.value}, waiting...") logger.debug(f"No available sessions or VRAM for {model_type.value}, waiting...")
await condition.wait() await condition.wait()
async def _release_session(self, session: ModelSession): async def _release_session(self, session: ModelSession):
"""세션을 반환하고 대기 중인 다른 요청에 알립니다."""
condition = self.conditions[session.model_type] condition = self.conditions[session.model_type]
async with condition: async with condition:
session.in_use = False session.in_use = False
logger.debug(f"Released session {session.session_id}") logger.debug(f"Released session {session.session_id}")
condition.notify() # 대기 중인 하나의 코루틴을 깨움 condition.notify()
def get_status(self) -> dict: def get_status(self) -> dict:
"""세션 풀의 현재 상태를 반환합니다."""
status_by_model = {} status_by_model = {}
for model_type in ModelType: for model_type in ModelType:
pool = self.pools[model_type] pool = self.pools[model_type]
min_s, max_s = self.model_configs[model_type] min_s, max_s = self.model_configs[model_type]
@ -275,19 +226,48 @@ class SessionPool:
available = total - in_use available = total - in_use
status_by_model[model_type.value] = { status_by_model[model_type.value] = {
"min": min_s, "min": min_s, "max": max_s, "total": total,
"max": max_s, "in_use": in_use, "available": available
"total": total,
"in_use": in_use,
"available": available
} }
return status_by_model return status_by_model
# 전역 세션 풀 인스턴스 (설정값으로 초기화) async def _reap_idle_sessions_task(self):
logger.info(f"Idle session reaper started. Timeout: {settings.SESSION_IDLE_TIMEOUT}s, Check Interval: 60s")
while True:
await asyncio.sleep(60)
reaped_counts = defaultdict(int)
for model_type, pool in self.pools.items():
min_sessions, _ = self.model_configs[model_type]
async with self.conditions[model_type]:
if len(pool) <= min_sessions:
continue
idle_sessions = [s for s in pool if s.is_idle(settings.SESSION_IDLE_TIMEOUT)]
num_to_reap = min(len(idle_sessions), len(pool) - min_sessions)
if num_to_reap > 0:
sessions_to_reap = idle_sessions[:num_to_reap]
logger.info(f"Reaping {len(sessions_to_reap)} idle session(s) for {model_type.value}.")
for session in sessions_to_reap:
pool.remove(session)
reaped_counts[session.model_type.value] += 1
del session.model
del session
self.conditions[model_type].notify_all()
if reaped_counts:
reaped_info = ", ".join([f"{count} {model}" for model, count in reaped_counts.items()])
self._log_pool_status("reap", reaped_info=reaped_info)
# Global session pool instance
model_configs = { model_configs = {
ModelType.SIMPLE_LAMA: (settings.SIMPLE_LAMA_MIN_SESSIONS, settings.SIMPLE_LAMA_MAX_SESSIONS), ModelType.SIMPLE_LAMA: (settings.SIMPLE_LAMA_MIN_SESSIONS, settings.SIMPLE_LAMA_MAX_SESSIONS),
ModelType.MIGAN: (settings.MIGAN_MIN_SESSIONS, settings.MIGAN_MAX_SESSIONS), ModelType.MIGAN: (settings.MIGAN_MIN_SESSIONS, settings.MIGAN_MAX_SESSIONS),
ModelType.REMBG: (settings.REMBG_MIN_SESSIONS, settings.REMBG_MAX_SESSIONS), ModelType.REMBG: (settings.REMBG_MIN_SESSIONS, settings.REMBG_MAX_SESSIONS),
} }
session_pool = SessionPool(model_configs=model_configs) session_pool = SessionPool(model_configs=model_configs)

View File

@ -342,6 +342,10 @@ class WorkerManager:
async def _inpaint(): async def _inpaint():
from ..core.session_pool import session_pool, ModelType from ..core.session_pool import session_pool, ModelType
async with session_pool.get_session(model_type) as session: async with session_pool.get_session(model_type) as session:
vram_before = gpu_monitor.get_gpu_memory_info().get('used', 0)
logger.info(f"🧠[{stats_model_key}] Inference Start. VRAM: {(vram_before / 1024):.1f} GB")
start_time = time.time() start_time = time.time()
# Migan은 단일 이미지만 처리하므로 기존 로직 유지 # Migan은 단일 이미지만 처리하므로 기존 로직 유지
result = await session.model.inpaint( result = await session.model.inpaint(
@ -349,8 +353,11 @@ class WorkerManager:
mask=kwargs["mask"], mask=kwargs["mask"],
) )
duration = time.time() - start_time duration = time.time() - start_time
vram_after = gpu_monitor.get_gpu_memory_info().get('used', 0)
logger.info(f"✅[{stats_model_key}] Inference End. VRAM: {(vram_after / 1024):.1f} GB | Duration: {duration:.3f}s")
stats_manager.record_time(stats_model_key, duration) stats_manager.record_time(stats_model_key, duration)
logger.info(f"'{model_name}' inpainting processed in {duration:.3f}s")
return result return result
# _execute_task 대신 직접 실행 # _execute_task 대신 직접 실행
@ -368,6 +375,10 @@ class WorkerManager:
batch_size = len(batch_data) batch_size = len(batch_data)
async with session_pool.get_session(model_type) as session: async with session_pool.get_session(model_type) as session:
vram_before = gpu_monitor.get_gpu_memory_info().get('used', 0)
logger.info(f"🧠[{stats_model_key}] Batch Inference Start (Size: {batch_size}). VRAM: {(vram_before / 1024):.1f} GB")
start_time = time.time() start_time = time.time()
images = [item['image'] for item in batch_data] images = [item['image'] for item in batch_data]
@ -380,6 +391,10 @@ class WorkerManager:
) )
duration = time.time() - start_time duration = time.time() - start_time
vram_after = gpu_monitor.get_gpu_memory_info().get('used', 0)
logger.info(f"✅[{stats_model_key}] Batch Inference End (Size: {batch_size}). VRAM: {(vram_after / 1024):.1f} GB | Duration: {duration:.3f}s")
# 통계 기록: 배치 전체 처리 시간 / 배치 크기 # 통계 기록: 배치 전체 처리 시간 / 배치 크기
stats_manager.record_time(stats_model_key, duration / batch_size, count=batch_size) stats_manager.record_time(stats_model_key, duration / batch_size, count=batch_size)
logger.info(f"'simple-lama' batch of {batch_size} processed in {duration:.3f}s (avg: {duration/batch_size:.3f}s/image)") logger.info(f"'simple-lama' batch of {batch_size} processed in {duration:.3f}s (avg: {duration/batch_size:.3f}s/image)")

View File

@ -8,6 +8,14 @@ import logging
import subprocess import subprocess
import os import os
from typing import Dict, Optional, List from typing import Dict, Optional, List
try:
import jtop
JTOP_AVAILABLE = True
except ImportError:
JTOP_AVAILABLE = False
logging.warning("jtop library not found. Jetson monitoring will be limited. Please run 'sudo pip install jetson-stats'")
try: try:
import pynvml import pynvml
NVML_AVAILABLE = True NVML_AVAILABLE = True
@ -27,9 +35,35 @@ class JetsonMonitor:
self.jetson_clocks_path = "/sys/kernel/debug/clk" self.jetson_clocks_path = "/sys/kernel/debug/clk"
self.jetson_thermal_path = "/sys/devices/virtual/thermal" self.jetson_thermal_path = "/sys/devices/virtual/thermal"
self.jetson_power_path = "/sys/kernel/debug/tegra_pcie/pcie_power" self.jetson_power_path = "/sys/kernel/debug/tegra_pcie/pcie_power"
self._jtop = None
if JTOP_AVAILABLE:
try:
self._jtop = jtop.jtop()
self._jtop.start()
except Exception as e:
logger.error(f"Failed to initialize jtop: {e}")
self._jtop = None
def get_gpu_memory_info(self) -> Dict[str, float]: def get_gpu_memory_info(self) -> Dict[str, float]:
"""Jetson 전용 GPU 메모리 정보를 가져옵니다.""" """Jetson 전용 GPU 메모리 정보를 가져옵니다."""
if self._jtop and self._jtop.ok:
try:
stats = self._jtop.stats
ram = stats.get('RAM', {})
total_mb = ram.get('tot', 0)
used_mb = ram.get('use', 0)
if total_mb > 0:
return {
"total": total_mb,
"used": used_mb,
"free": total_mb - used_mb,
"usage_percent": (used_mb / total_mb) * 100,
"free_ratio": (total_mb - used_mb) / total_mb
}
except Exception as e:
logger.warning(f"Failed to get memory info from jtop: {e}")
# jtop 실패 시 fallback 로직 (기존 코드)
try: try:
# 1. Jetson GPU 클래스에서 정보 읽기 # 1. Jetson GPU 클래스에서 정보 읽기
if os.path.exists("/sys/class/nvidia-gpu"): if os.path.exists("/sys/class/nvidia-gpu"):
@ -129,21 +163,21 @@ class JetsonMonitor:
# 5. 기본값 반환 # 5. 기본값 반환
logger.warning("GPU 메모리 정보를 가져올 수 없습니다. 기본값을 사용합니다.") logger.warning("GPU 메모리 정보를 가져올 수 없습니다. 기본값을 사용합니다.")
mem = psutil.virtual_memory()
total_mb = mem.total / 1024**2
used_mb = mem.used / 1024**2
return { return {
"total": 8.0, "total": total_mb, "used": used_mb, "free": mem.available / 1024**2,
"used": 0.0, "usage_percent": mem.percent, "free_ratio": mem.available / mem.total
"free": 8.0,
"usage_percent": 0.0
} }
except Exception as e: except Exception as e:
logger.debug(f"Jetson GPU memory read failed: {e}") logger.error(f"Jetson GPU memory read failed: {e}")
return { return {"total": 0, "used": 0, "free": 0, "usage_percent": 0, "free_ratio": 0}
"total": 8.0,
"used": 0.0, def __del__(self):
"free": 8.0, if self._jtop and self._jtop.ok:
"usage_percent": 0.0 self._jtop.close()
}
def _tegrastats_available(self) -> bool: def _tegrastats_available(self) -> bool:
"""tegrastats 명령어 사용 가능 여부 확인""" """tegrastats 명령어 사용 가능 여부 확인"""

View File

@ -6905,3 +6905,207 @@ NameError: name 'image_batch' is not defined
2025-08-30 01:57:50,022 - app.models.simple_lama - INFO - 실제 SimpleLama 모델로 4개 이미지 인페인팅 수행 2025-08-30 01:57:50,022 - app.models.simple_lama - INFO - 실제 SimpleLama 모델로 4개 이미지 인페인팅 수행
2025-08-30 01:57:51,985 - app.core.worker_manager - INFO - 'simple-lama' batch of 4 processed in 2.184s (avg: 0.546s/image) 2025-08-30 01:57:51,985 - app.core.worker_manager - INFO - 'simple-lama' batch of 4 processed in 2.184s (avg: 0.546s/image)
2025-08-30 01:57:51,986 - app.core.batch_manager - INFO - Successfully processed batch of 4 jobs. 2025-08-30 01:57:51,986 - app.core.batch_manager - INFO - Successfully processed batch of 4 jobs.
2025-08-30 02:00:41,334 - uvicorn.error - INFO - Shutting down
2025-08-30 02:00:41,437 - uvicorn.error - INFO - Waiting for application shutdown.
2025-08-30 02:00:41,438 - main - INFO - 🛑 인페인팅 서버 종료 중...
2025-08-30 02:00:41,439 - app.core.worker_manager - INFO - Stopping worker manager...
2025-08-30 02:00:41,440 - app.core.worker_manager - INFO - Worker manager stopped
2025-08-30 02:00:41,440 - main - INFO - ✅ 워커 매니저 중지 완료
2025-08-30 02:00:41,440 - app.core.batch_manager - INFO - Stopping BatchManager...
2025-08-30 02:00:41,442 - app.core.batch_manager - INFO - BatchManager stopped.
2025-08-30 02:00:41,442 - main - INFO - ✅ 배치 관리자 중지 완료
2025-08-30 02:00:41,442 - main - INFO - 👋 인페인팅 서버 종료 완료
2025-08-30 02:00:41,443 - app.utils.discord_notifier - WARNING - Discord 웹훅 URL이 설정되지 않아 알림을 보낼 수 없습니다.
2025-08-30 02:00:41,444 - uvicorn.error - INFO - Application shutdown complete.
2025-08-30 02:00:41,444 - uvicorn.error - INFO - Finished server process [77869]
2025-08-30 02:05:03,503 - uvicorn.error - INFO - Started server process [80039]
2025-08-30 02:05:03,504 - uvicorn.error - INFO - Waiting for application startup.
2025-08-30 02:05:03,505 - main - INFO - 🚀 인페인팅 서버 시작 중...
2025-08-30 02:05:03,505 - main - INFO - ✅ 공유 객체를 app.state에 저장 완료
2025-08-30 02:05:03,505 - main - INFO - 🔄 상태 저장 백그라운드 작업 생성 중...
2025-08-30 02:05:03,506 - main - INFO - ✅ 상태 저장 백그라운드 작업 생성 완료
2025-08-30 02:05:03,506 - main - INFO - 🚀 세션 풀 초기화 (CUDA 자동 감지)
2025-08-30 02:05:03,506 - app.core.session_pool - INFO - Initializing dynamic session pools...
2025-08-30 02:05:03,506 - app.core.session_pool - INFO - Pre-loading 2 sessions for simple_lama
2025-08-30 02:05:03,507 - main - INFO - 🔄 상태 저장 백그라운드 작업 시작됨
2025-08-30 02:05:03,508 - app.core.session_pool - INFO - Creating new session simple_lama_0 for simple_lama...
2025-08-30 02:05:06,750 - app.core.session_pool - INFO - Creating new session simple_lama_1 for simple_lama...
2025-08-30 02:05:06,752 - app.models.simple_lama - INFO - Loading Simple LAMA model...
2025-08-30 02:05:11,058 - app.models.simple_lama - INFO - 실제 SimpleLama 모델 로딩 완료
2025-08-30 02:05:11,059 - app.models.simple_lama - INFO - Simple LAMA model loaded successfully
2025-08-30 02:05:11,060 - app.models.simple_lama - INFO - Loading Simple LAMA model...
2025-08-30 02:05:12,781 - app.models.simple_lama - INFO - 실제 SimpleLama 모델 로딩 완료
2025-08-30 02:05:12,781 - app.models.simple_lama - INFO - Simple LAMA model loaded successfully
2025-08-30 02:05:12,783 - app.core.session_pool - INFO - Successfully created session simple_lama_0
2025-08-30 02:05:15,866 - app.core.session_pool - INFO - Session Created (simple_lama). Status -> simple_lama: 0, migan: 0, rembg: 0 | VRAM: 0.0/0.0 GB (25.7%)
2025-08-30 02:05:15,868 - app.core.session_pool - INFO - Successfully created session simple_lama_1
2025-08-30 02:05:18,967 - app.core.session_pool - INFO - Session Created (simple_lama). Status -> simple_lama: 0, migan: 0, rembg: 0 | VRAM: 0.0/0.0 GB (25.7%)
2025-08-30 02:05:18,970 - app.core.session_pool - INFO - Pre-loading 2 sessions for migan
2025-08-30 02:05:18,975 - app.core.session_pool - INFO - Creating new session migan_0 for migan...
2025-08-30 02:05:19,074 - app.core.session_pool - INFO - Creating new session migan_1 for migan...
2025-08-30 02:05:19,075 - app.models.migan - INFO - Loading MIGAN ONNX model...
2025-08-30 02:05:19,075 - app.models.migan - INFO - MIGAN ONNX 런타임 세션 생성 시도...
2025-08-30 02:05:19,076 - app.models.migan - INFO - MIGAN ONNX providers 설정: ['CUDAExecutionProvider', 'CPUExecutionProvider']
2025-08-30 02:05:22,203 - app.models.migan - INFO - MIGAN ONNX 세션 생성 완료. Providers: ['CUDAExecutionProvider', 'CPUExecutionProvider']
2025-08-30 02:05:22,204 - app.models.migan - INFO - MIGAN ONNX model loaded successfully
2025-08-30 02:05:22,204 - app.models.migan - INFO - Loading MIGAN ONNX model...
2025-08-30 02:05:22,204 - app.models.migan - INFO - MIGAN ONNX 런타임 세션 생성 시도...
2025-08-30 02:05:22,205 - app.models.migan - INFO - MIGAN ONNX providers 설정: ['CUDAExecutionProvider', 'CPUExecutionProvider']
2025-08-30 02:05:23,455 - app.models.migan - INFO - MIGAN ONNX 세션 생성 완료. Providers: ['CUDAExecutionProvider', 'CPUExecutionProvider']
2025-08-30 02:05:23,456 - app.models.migan - INFO - MIGAN ONNX model loaded successfully
2025-08-30 02:05:23,456 - app.core.session_pool - INFO - Successfully created session migan_0
2025-08-30 02:05:26,546 - app.core.session_pool - INFO - Session Created (migan). Status -> simple_lama: 2, migan: 0, rembg: 0 | VRAM: 0.0/0.0 GB (27.5%)
2025-08-30 02:05:26,548 - app.core.session_pool - INFO - Successfully created session migan_1
2025-08-30 02:05:29,649 - app.core.session_pool - INFO - Session Created (migan). Status -> simple_lama: 2, migan: 0, rembg: 0 | VRAM: 0.0/0.0 GB (27.5%)
2025-08-30 02:05:29,655 - app.core.session_pool - INFO - Pre-loading 2 sessions for rembg
2025-08-30 02:05:29,657 - app.core.session_pool - INFO - Creating new session rembg_0 for rembg...
2025-08-30 02:05:29,665 - app.core.session_pool - INFO - Creating new session rembg_1 for rembg...
2025-08-30 02:05:29,666 - app.models.rembg_model - INFO - Loading REMBG model (birefnet-general-lite)...
2025-08-30 02:05:31,788 - app.models.rembg_model - INFO - rembg 모듈 임포트 성공 (세션 생성은 지연 로딩)
2025-08-30 02:05:31,788 - app.models.rembg_model - INFO - 🔧 rembg 새 세션 생성 필요: birefnet-general-lite_cuda_True
2025-08-30 02:05:31,789 - app.models.rembg_model - WARNING - rembg.sessions import 실패, 기본 방식 사용
2025-08-30 02:05:31,789 - app.models.rembg_model - INFO - rembg 세션 생성 providers: ['CUDAExecutionProvider', 'CPUExecutionProvider']
2025-08-30 02:05:44,832 - app.models.rembg_model - INFO - ✅ rembg 'birefnet-general-lite' GPU 가속로 동작 (providers: ['CUDAExecutionProvider', 'CPUExecutionProvider'])
2025-08-30 02:05:44,833 - app.models.rembg_model - INFO - REMBG model (birefnet-general-lite) loaded successfully
2025-08-30 02:05:44,834 - app.models.rembg_model - INFO - Loading REMBG model (birefnet-general-lite)...
2025-08-30 02:05:44,834 - app.models.rembg_model - INFO - rembg 모듈 임포트 성공 (세션 생성은 지연 로딩)
2025-08-30 02:05:44,835 - app.models.rembg_model - INFO - 🔧 rembg 새 세션 생성 필요: birefnet-general-lite_cuda_True
2025-08-30 02:05:44,835 - app.models.rembg_model - WARNING - rembg.sessions import 실패, 기본 방식 사용
2025-08-30 02:05:44,836 - app.models.rembg_model - INFO - rembg 세션 생성 providers: ['CUDAExecutionProvider', 'CPUExecutionProvider']
2025-08-30 02:05:57,362 - app.models.rembg_model - INFO - ✅ rembg 'birefnet-general-lite' GPU 가속로 동작 (providers: ['CUDAExecutionProvider', 'CPUExecutionProvider'])
2025-08-30 02:05:57,363 - app.models.rembg_model - INFO - REMBG model (birefnet-general-lite) loaded successfully
2025-08-30 02:05:57,364 - app.core.session_pool - INFO - Successfully created session rembg_0
2025-08-30 02:06:00,471 - app.core.session_pool - INFO - Session Created (rembg). Status -> simple_lama: 2, migan: 2, rembg: 0 | VRAM: 0.0/0.0 GB (30.9%)
2025-08-30 02:06:00,474 - app.core.session_pool - INFO - Successfully created session rembg_1
2025-08-30 02:06:03,606 - app.core.session_pool - INFO - Session Created (rembg). Status -> simple_lama: 2, migan: 2, rembg: 0 | VRAM: 0.0/0.0 GB (30.9%)
2025-08-30 02:06:03,614 - app.core.session_pool - INFO - Session pools initialized successfully
2025-08-30 02:06:03,614 - main - INFO - ✅ 세션 풀 초기화 완료
2025-08-30 02:06:03,615 - app.core.worker_manager - INFO - Starting worker manager...
2025-08-30 02:06:03,616 - app.core.worker_manager - INFO - Worker manager started with 10 workers
2025-08-30 02:06:03,617 - main - INFO - ✅ 워커 매니저 시작 완료
2025-08-30 02:06:03,617 - app.core.batch_manager - INFO - Starting BatchManager...
2025-08-30 02:06:03,618 - app.core.batch_manager - INFO - BatchManager started successfully.
2025-08-30 02:06:03,618 - main - INFO - ✅ 배치 관리자 시작 완료
2025-08-30 02:06:03,618 - main - INFO - 🎉 인페인팅 서버 시작 완료!
2025-08-30 02:06:03,619 - app.utils.discord_notifier - WARNING - Discord 웹훅 URL이 설정되지 않아 알림을 보낼 수 없습니다.
2025-08-30 02:06:03,620 - app.core.session_pool - INFO - Idle session reaper started. Timeout: 1800s, Check Interval: 60s
2025-08-30 02:06:06,738 - uvicorn.error - INFO - Application startup complete.
2025-08-30 02:06:06,749 - uvicorn.error - INFO - Uvicorn running on http://0.0.0.0:8008 (Press CTRL+C to quit)
2025-08-30 02:06:15,807 - app.core.batch_manager - INFO - Creating a new batch with 4 jobs.
2025-08-30 02:06:15,968 - app.models.simple_lama - INFO - 실제 SimpleLama 모델로 4개 이미지 인페인팅 수행
2025-08-30 02:06:21,923 - app.core.worker_manager - INFO - 'simple-lama' batch of 4 processed in 6.115s (avg: 1.529s/image)
2025-08-30 02:06:21,924 - app.core.batch_manager - INFO - Successfully processed batch of 4 jobs.
2025-08-30 02:06:21,954 - app.core.batch_manager - INFO - Creating a new batch with 4 jobs.
2025-08-30 02:06:22,177 - app.models.simple_lama - INFO - 실제 SimpleLama 모델로 4개 이미지 인페인팅 수행
2025-08-30 02:06:35,717 - app.core.worker_manager - INFO - 'simple-lama' batch of 4 processed in 13.762s (avg: 3.440s/image)
2025-08-30 02:06:35,718 - app.core.batch_manager - INFO - Successfully processed batch of 4 jobs.
2025-08-30 02:06:40,055 - app.core.batch_manager - INFO - Creating a new batch with 4 jobs.
2025-08-30 02:06:40,326 - app.models.simple_lama - INFO - 실제 SimpleLama 모델로 4개 이미지 인페인팅 수행
2025-08-30 02:06:42,280 - app.core.worker_manager - INFO - 'simple-lama' batch of 4 processed in 2.223s (avg: 0.556s/image)
2025-08-30 02:06:42,281 - app.core.batch_manager - INFO - Successfully processed batch of 4 jobs.
2025-08-30 02:06:42,312 - app.core.batch_manager - INFO - Creating a new batch with 4 jobs.
2025-08-30 02:06:42,534 - app.models.simple_lama - INFO - 실제 SimpleLama 모델로 4개 이미지 인페인팅 수행
2025-08-30 02:06:44,497 - app.core.worker_manager - INFO - 'simple-lama' batch of 4 processed in 2.184s (avg: 0.546s/image)
2025-08-30 02:06:44,498 - app.core.batch_manager - INFO - Successfully processed batch of 4 jobs.
2025-08-30 02:06:48,023 - app.core.batch_manager - INFO - Creating a new batch with 4 jobs.
2025-08-30 02:06:48,279 - app.models.simple_lama - INFO - 실제 SimpleLama 모델로 4개 이미지 인페인팅 수행
2025-08-30 02:06:50,618 - app.core.worker_manager - INFO - 'simple-lama' batch of 4 processed in 2.595s (avg: 0.649s/image)
2025-08-30 02:06:50,619 - app.core.batch_manager - INFO - Successfully processed batch of 4 jobs.
2025-08-30 02:06:50,649 - app.core.batch_manager - INFO - Creating a new batch with 4 jobs.
2025-08-30 02:06:50,871 - app.models.simple_lama - INFO - 실제 SimpleLama 모델로 4개 이미지 인페인팅 수행
2025-08-30 02:06:52,820 - app.core.worker_manager - INFO - 'simple-lama' batch of 4 processed in 2.170s (avg: 0.542s/image)
2025-08-30 02:06:52,821 - app.core.batch_manager - INFO - Successfully processed batch of 4 jobs.
2025-08-30 02:06:58,157 - app.core.batch_manager - INFO - Creating a new batch with 4 jobs.
2025-08-30 02:06:58,403 - app.models.simple_lama - INFO - 실제 SimpleLama 모델로 4개 이미지 인페인팅 수행
2025-08-30 02:07:00,898 - app.core.worker_manager - INFO - 'simple-lama' batch of 4 processed in 2.740s (avg: 0.685s/image)
2025-08-30 02:07:00,899 - app.core.batch_manager - INFO - Successfully processed batch of 4 jobs.
2025-08-30 02:07:00,929 - app.core.batch_manager - INFO - Creating a new batch with 4 jobs.
2025-08-30 02:07:01,153 - app.models.simple_lama - INFO - 실제 SimpleLama 모델로 4개 이미지 인페인팅 수행
2025-08-30 02:07:03,109 - app.core.worker_manager - INFO - 'simple-lama' batch of 4 processed in 2.179s (avg: 0.545s/image)
2025-08-30 02:07:03,109 - app.core.batch_manager - INFO - Successfully processed batch of 4 jobs.
2025-08-30 02:09:36,641 - uvicorn.error - INFO - Shutting down
2025-08-30 02:09:36,746 - uvicorn.error - INFO - Waiting for application shutdown.
2025-08-30 02:09:36,747 - main - INFO - 🛑 인페인팅 서버 종료 중...
2025-08-30 02:09:36,748 - app.core.worker_manager - INFO - Stopping worker manager...
2025-08-30 02:09:36,748 - app.core.worker_manager - INFO - Worker manager stopped
2025-08-30 02:09:36,749 - main - INFO - ✅ 워커 매니저 중지 완료
2025-08-30 02:09:36,749 - app.core.batch_manager - INFO - Stopping BatchManager...
2025-08-30 02:09:36,750 - app.core.batch_manager - INFO - BatchManager stopped.
2025-08-30 02:09:36,751 - main - INFO - ✅ 배치 관리자 중지 완료
2025-08-30 02:09:36,751 - main - INFO - 👋 인페인팅 서버 종료 완료
2025-08-30 02:09:36,752 - app.utils.discord_notifier - WARNING - Discord 웹훅 URL이 설정되지 않아 알림을 보낼 수 없습니다.
2025-08-30 02:09:36,752 - uvicorn.error - INFO - Application shutdown complete.
2025-08-30 02:09:36,753 - uvicorn.error - INFO - Finished server process [80039]
2025-08-30 02:10:05,479 - uvicorn.error - INFO - Started server process [81535]
2025-08-30 02:10:05,500 - uvicorn.error - INFO - Waiting for application startup.
2025-08-30 02:10:05,518 - main - INFO - 🚀 인페인팅 서버 시작 중...
2025-08-30 02:10:05,519 - main - INFO - ✅ 공유 객체를 app.state에 저장 완료
2025-08-30 02:10:05,520 - main - INFO - 🔄 상태 저장 백그라운드 작업 생성 중...
2025-08-30 02:10:05,527 - main - INFO - ✅ 상태 저장 백그라운드 작업 생성 완료
2025-08-30 02:10:05,529 - main - INFO - 🚀 세션 풀 초기화 (CUDA 자동 감지)
2025-08-30 02:10:05,529 - app.core.session_pool - INFO - Initializing dynamic session pools...
2025-08-30 02:10:05,530 - app.core.session_pool - INFO - Pre-loading 2 sessions for simple_lama
2025-08-30 02:10:05,531 - main - INFO - 🔄 상태 저장 백그라운드 작업 시작됨
2025-08-30 02:10:05,535 - app.core.session_pool - INFO - Creating new session simple_lama_0 for simple_lama...
2025-08-30 02:10:09,061 - app.core.session_pool - INFO - Creating new session simple_lama_1 for simple_lama...
2025-08-30 02:10:09,063 - app.models.simple_lama - INFO - Loading Simple LAMA model...
2025-08-30 02:10:13,365 - app.models.simple_lama - INFO - 실제 SimpleLama 모델 로딩 완료
2025-08-30 02:10:13,366 - app.models.simple_lama - INFO - Simple LAMA model loaded successfully
2025-08-30 02:10:13,367 - app.models.simple_lama - INFO - Loading Simple LAMA model...
2025-08-30 02:10:15,170 - app.models.simple_lama - INFO - 실제 SimpleLama 모델 로딩 완료
2025-08-30 02:10:15,171 - app.models.simple_lama - INFO - Simple LAMA model loaded successfully
2025-08-30 02:10:15,173 - app.core.session_pool - INFO - Successfully created session simple_lama_0
2025-08-30 02:10:18,257 - app.core.session_pool - INFO - Session Created (simple_lama). Status -> simple_lama: 0, migan: 0, rembg: 0 | VRAM: 0.0/0.0 GB (25.5%)
2025-08-30 02:10:18,260 - app.core.session_pool - INFO - Successfully created session simple_lama_1
2025-08-30 02:10:21,351 - app.core.session_pool - INFO - Session Created (simple_lama). Status -> simple_lama: 0, migan: 0, rembg: 0 | VRAM: 0.0/0.0 GB (25.5%)
2025-08-30 02:10:21,354 - app.core.session_pool - INFO - Pre-loading 2 sessions for migan
2025-08-30 02:10:21,360 - app.core.session_pool - INFO - Creating new session migan_0 for migan...
2025-08-30 02:10:21,463 - app.core.session_pool - INFO - Creating new session migan_1 for migan...
2025-08-30 02:10:21,463 - app.models.migan - INFO - Loading MIGAN ONNX model...
2025-08-30 02:10:21,464 - app.models.migan - INFO - MIGAN ONNX 런타임 세션 생성 시도...
2025-08-30 02:10:21,464 - app.models.migan - INFO - MIGAN ONNX providers 설정: ['CUDAExecutionProvider', 'CPUExecutionProvider']
2025-08-30 02:10:24,696 - app.models.migan - INFO - MIGAN ONNX 세션 생성 완료. Providers: ['CUDAExecutionProvider', 'CPUExecutionProvider']
2025-08-30 02:10:24,697 - app.models.migan - INFO - MIGAN ONNX model loaded successfully
2025-08-30 02:10:24,697 - app.models.migan - INFO - Loading MIGAN ONNX model...
2025-08-30 02:10:24,698 - app.models.migan - INFO - MIGAN ONNX 런타임 세션 생성 시도...
2025-08-30 02:10:24,698 - app.models.migan - INFO - MIGAN ONNX providers 설정: ['CUDAExecutionProvider', 'CPUExecutionProvider']
2025-08-30 02:10:25,896 - app.models.migan - INFO - MIGAN ONNX 세션 생성 완료. Providers: ['CUDAExecutionProvider', 'CPUExecutionProvider']
2025-08-30 02:10:25,897 - app.models.migan - INFO - MIGAN ONNX model loaded successfully
2025-08-30 02:10:25,897 - app.core.session_pool - INFO - Successfully created session migan_0
2025-08-30 02:10:28,989 - app.core.session_pool - INFO - Session Created (migan). Status -> simple_lama: 2, migan: 0, rembg: 0 | VRAM: 0.0/0.0 GB (27.4%)
2025-08-30 02:10:28,992 - app.core.session_pool - INFO - Successfully created session migan_1
2025-08-30 02:10:32,102 - app.core.session_pool - INFO - Session Created (migan). Status -> simple_lama: 2, migan: 0, rembg: 0 | VRAM: 0.0/0.0 GB (27.4%)
2025-08-30 02:10:32,109 - app.core.session_pool - INFO - Pre-loading 2 sessions for rembg
2025-08-30 02:10:32,111 - app.core.session_pool - INFO - Creating new session rembg_0 for rembg...
2025-08-30 02:10:32,118 - app.core.session_pool - INFO - Creating new session rembg_1 for rembg...
2025-08-30 02:10:32,120 - app.models.rembg_model - INFO - Loading REMBG model (birefnet-general-lite)...
2025-08-30 02:10:34,236 - app.models.rembg_model - INFO - rembg 모듈 임포트 성공 (세션 생성은 지연 로딩)
2025-08-30 02:10:34,236 - app.models.rembg_model - INFO - 🔧 rembg 새 세션 생성 필요: birefnet-general-lite_cuda_True
2025-08-30 02:10:34,237 - app.models.rembg_model - WARNING - rembg.sessions import 실패, 기본 방식 사용
2025-08-30 02:10:34,237 - app.models.rembg_model - INFO - rembg 세션 생성 providers: ['CUDAExecutionProvider', 'CPUExecutionProvider']
2025-08-30 02:10:47,102 - app.models.rembg_model - INFO - ✅ rembg 'birefnet-general-lite' GPU 가속로 동작 (providers: ['CUDAExecutionProvider', 'CPUExecutionProvider'])
2025-08-30 02:10:47,103 - app.models.rembg_model - INFO - REMBG model (birefnet-general-lite) loaded successfully
2025-08-30 02:10:47,103 - app.models.rembg_model - INFO - Loading REMBG model (birefnet-general-lite)...
2025-08-30 02:10:47,104 - app.models.rembg_model - INFO - rembg 모듈 임포트 성공 (세션 생성은 지연 로딩)
2025-08-30 02:10:47,104 - app.models.rembg_model - INFO - 🔧 rembg 새 세션 생성 필요: birefnet-general-lite_cuda_True
2025-08-30 02:10:47,105 - app.models.rembg_model - WARNING - rembg.sessions import 실패, 기본 방식 사용
2025-08-30 02:10:47,105 - app.models.rembg_model - INFO - rembg 세션 생성 providers: ['CUDAExecutionProvider', 'CPUExecutionProvider']
2025-08-30 02:10:59,703 - app.models.rembg_model - INFO - ✅ rembg 'birefnet-general-lite' GPU 가속로 동작 (providers: ['CUDAExecutionProvider', 'CPUExecutionProvider'])
2025-08-30 02:10:59,704 - app.models.rembg_model - INFO - REMBG model (birefnet-general-lite) loaded successfully
2025-08-30 02:10:59,705 - app.core.session_pool - INFO - Successfully created session rembg_0
2025-08-30 02:11:02,815 - app.core.session_pool - INFO - Session Created (rembg). Status -> simple_lama: 2, migan: 2, rembg: 0 | VRAM: 0.0/0.0 GB (31.0%)
2025-08-30 02:11:02,817 - app.core.session_pool - INFO - Successfully created session rembg_1
2025-08-30 02:11:05,936 - app.core.session_pool - INFO - Session Created (rembg). Status -> simple_lama: 2, migan: 2, rembg: 0 | VRAM: 0.0/0.0 GB (31.0%)
2025-08-30 02:11:05,944 - app.core.session_pool - INFO - Session pools initialized successfully
2025-08-30 02:11:05,945 - main - INFO - ✅ 세션 풀 초기화 완료
2025-08-30 02:11:05,946 - app.core.worker_manager - INFO - Starting worker manager...
2025-08-30 02:11:05,949 - app.core.worker_manager - INFO - Worker manager started with 10 workers
2025-08-30 02:11:05,949 - main - INFO - ✅ 워커 매니저 시작 완료
2025-08-30 02:11:05,950 - app.core.batch_manager - INFO - Starting BatchManager...
2025-08-30 02:11:05,951 - app.core.batch_manager - INFO - BatchManager started successfully.
2025-08-30 02:11:05,951 - main - INFO - ✅ 배치 관리자 시작 완료
2025-08-30 02:11:05,952 - main - INFO - 🎉 인페인팅 서버 시작 완료!
2025-08-30 02:11:05,954 - app.utils.discord_notifier - WARNING - Discord 웹훅 URL이 설정되지 않아 알림을 보낼 수 없습니다.
2025-08-30 02:11:05,955 - app.core.session_pool - INFO - Idle session reaper started. Timeout: 1800s, Check Interval: 60s
2025-08-30 02:11:09,078 - uvicorn.error - INFO - Application startup complete.
2025-08-30 02:11:09,089 - uvicorn.error - INFO - Uvicorn running on http://0.0.0.0:8008 (Press CTRL+C to quit)

View File

@ -1,127 +1,612 @@
INFO: Started server process [77869] Failed to initialize jtop: The jtop.service is not active. Please run:
2025-08-30 01:55:09,899 - uvicorn.error - INFO - Started server process [77869] sudo systemctl restart jtop.service
INFO: Started server process [81535]
2025-08-30 02:10:05,479 - uvicorn.error - INFO - Started server process [81535]
INFO: Waiting for application startup. INFO: Waiting for application startup.
2025-08-30 01:55:09,900 - uvicorn.error - INFO - Waiting for application startup. 2025-08-30 02:10:05,500 - uvicorn.error - INFO - Waiting for application startup.
2025-08-30 01:55:09,901 - main - INFO - 🚀 인페인팅 서버 시작 중... 2025-08-30 02:10:05,518 - main - INFO - 🚀 인페인팅 서버 시작 중...
2025-08-30 01:55:09,901 - main - INFO - ✅ 공유 객체를 app.state에 저장 완료 2025-08-30 02:10:05,519 - main - INFO - ✅ 공유 객체를 app.state에 저장 완료
2025-08-30 01:55:09,902 - main - INFO - 🔄 상태 저장 백그라운드 작업 생성 중... 2025-08-30 02:10:05,520 - main - INFO - 🔄 상태 저장 백그라운드 작업 생성 중...
2025-08-30 01:55:09,902 - main - INFO - ✅ 상태 저장 백그라운드 작업 생성 완료 2025-08-30 02:10:05,527 - main - INFO - ✅ 상태 저장 백그라운드 작업 생성 완료
2025-08-30 01:55:09,902 - main - INFO - 🚀 세션 풀 초기화 (CUDA 자동 감지) 2025-08-30 02:10:05,529 - main - INFO - 🚀 세션 풀 초기화 (CUDA 자동 감지)
2025-08-30 01:55:09,902 - app.core.session_pool - INFO - Initializing dynamic session pools... 2025-08-30 02:10:05,529 - app.core.session_pool - INFO - Initializing dynamic session pools...
2025-08-30 01:55:09,903 - app.core.session_pool - INFO - Pre-loading 2 sessions for simple_lama 2025-08-30 02:10:05,530 - app.core.session_pool - INFO - Pre-loading 2 sessions for simple_lama
2025-08-30 01:55:09,903 - main - INFO - 🔄 상태 저장 백그라운드 작업 시작됨 2025-08-30 02:10:05,531 - main - INFO - 🔄 상태 저장 백그라운드 작업 시작됨
2025-08-30 01:55:09,905 - app.core.session_pool - INFO - Creating new session simple_lama_0 for simple_lama... 2025-08-30 02:10:05,535 - app.core.session_pool - INFO - Creating new session simple_lama_0 for simple_lama...
2025-08-30 01:55:13,106 - app.models.simple_lama - INFO - Loading Simple LAMA model... 2025-08-30 02:10:09,061 - app.core.session_pool - INFO - Creating new session simple_lama_1 for simple_lama...
2025-08-30 01:55:17,237 - app.models.simple_lama - INFO - 실제 SimpleLama 모델 로딩 완료 2025-08-30 02:10:09,063 - app.models.simple_lama - INFO - Loading Simple LAMA model...
2025-08-30 01:55:17,239 - app.models.simple_lama - INFO - Simple LAMA model loaded successfully 2025-08-30 02:10:13,365 - app.models.simple_lama - INFO - 실제 SimpleLama 모델 로딩 완료
2025-08-30 01:55:17,240 - app.core.session_pool - INFO - Successfully created session simple_lama_0 2025-08-30 02:10:13,366 - app.models.simple_lama - INFO - Simple LAMA model loaded successfully
2025-08-30 01:55:17,241 - app.core.session_pool - INFO - Creating new session simple_lama_1 for simple_lama... 2025-08-30 02:10:13,367 - app.models.simple_lama - INFO - Loading Simple LAMA model...
2025-08-30 01:55:17,241 - app.models.simple_lama - INFO - Loading Simple LAMA model... 2025-08-30 02:10:15,170 - app.models.simple_lama - INFO - 실제 SimpleLama 모델 로딩 완료
2025-08-30 01:55:18,996 - app.models.simple_lama - INFO - 실제 SimpleLama 모델 로딩 완료 2025-08-30 02:10:15,171 - app.models.simple_lama - INFO - Simple LAMA model loaded successfully
2025-08-30 01:55:18,997 - app.models.simple_lama - INFO - Simple LAMA model loaded successfully 2025-08-30 02:10:15,173 - app.core.session_pool - INFO - Successfully created session simple_lama_0
2025-08-30 01:55:18,997 - app.core.session_pool - INFO - Successfully created session simple_lama_1 2025-08-30 02:10:18,257 - app.core.session_pool - INFO - Session Created (simple_lama). Status -> simple_lama: 0, migan: 0, rembg: 0 | VRAM: 0.0/0.0 GB (25.5%)
2025-08-30 01:55:18,998 - app.core.session_pool - INFO - Pre-loading 2 sessions for migan 2025-08-30 02:10:18,260 - app.core.session_pool - INFO - Successfully created session simple_lama_1
2025-08-30 01:55:18,999 - app.core.session_pool - INFO - Creating new session migan_0 for migan... 2025-08-30 02:10:21,351 - app.core.session_pool - INFO - Session Created (simple_lama). Status -> simple_lama: 0, migan: 0, rembg: 0 | VRAM: 0.0/0.0 GB (25.5%)
2025-08-30 01:55:19,063 - app.models.migan - INFO - Loading MIGAN ONNX model... 2025-08-30 02:10:21,354 - app.core.session_pool - INFO - Pre-loading 2 sessions for migan
2025-08-30 01:55:19,064 - app.models.migan - INFO - MIGAN ONNX 런타임 세션 생성 시도... 2025-08-30 02:10:21,360 - app.core.session_pool - INFO - Creating new session migan_0 for migan...
2025-08-30 01:55:19,064 - app.models.migan - INFO - MIGAN ONNX providers 설정: ['CUDAExecutionProvider', 'CPUExecutionProvider'] 2025-08-30 02:10:21,463 - app.core.session_pool - INFO - Creating new session migan_1 for migan...
2025-08-30 01:55:20.438912801 [W:onnxruntime:, transformer_memcpy.cc:74 ApplyImpl] 17 Memcpy nodes are added to the graph main_graph for CUDAExecutionProvider. It might have negative impact on performance (including unable to run CUDA graph). Set session_options.log_severity_level=1 to see the detail logs before this message. 2025-08-30 02:10:21,463 - app.models.migan - INFO - Loading MIGAN ONNX model...
2025-08-30 01:55:21,872 - app.models.migan - INFO - MIGAN ONNX 세션 생성 완료. Providers: ['CUDAExecutionProvider', 'CPUExecutionProvider'] 2025-08-30 02:10:21,464 - app.models.migan - INFO - MIGAN ONNX 런타임 세션 생성 시도...
2025-08-30 01:55:21,873 - app.models.migan - INFO - MIGAN ONNX model loaded successfully 2025-08-30 02:10:21,464 - app.models.migan - INFO - MIGAN ONNX providers 설정: ['CUDAExecutionProvider', 'CPUExecutionProvider']
2025-08-30 01:55:21,874 - app.core.session_pool - INFO - Successfully created session migan_0 2025-08-30 02:10:23.133477861 [W:onnxruntime:, transformer_memcpy.cc:74 ApplyImpl] 17 Memcpy nodes are added to the graph main_graph for CUDAExecutionProvider. It might have negative impact on performance (including unable to run CUDA graph). Set session_options.log_severity_level=1 to see the detail logs before this message.
2025-08-30 01:55:21,874 - app.core.session_pool - INFO - Creating new session migan_1 for migan... 2025-08-30 02:10:24,696 - app.models.migan - INFO - MIGAN ONNX 세션 생성 완료. Providers: ['CUDAExecutionProvider', 'CPUExecutionProvider']
2025-08-30 01:55:21,875 - app.models.migan - INFO - Loading MIGAN ONNX model... 2025-08-30 02:10:24,697 - app.models.migan - INFO - MIGAN ONNX model loaded successfully
2025-08-30 01:55:21,875 - app.models.migan - INFO - MIGAN ONNX 런타임 세션 생성 시도... 2025-08-30 02:10:24,697 - app.models.migan - INFO - Loading MIGAN ONNX model...
2025-08-30 01:55:21,875 - app.models.migan - INFO - MIGAN ONNX providers 설정: ['CUDAExecutionProvider', 'CPUExecutionProvider'] 2025-08-30 02:10:24,698 - app.models.migan - INFO - MIGAN ONNX 런타임 세션 생성 시도...
2025-08-30 01:55:22.968322444 [W:onnxruntime:, transformer_memcpy.cc:74 ApplyImpl] 17 Memcpy nodes are added to the graph main_graph for CUDAExecutionProvider. It might have negative impact on performance (including unable to run CUDA graph). Set session_options.log_severity_level=1 to see the detail logs before this message. 2025-08-30 02:10:24,698 - app.models.migan - INFO - MIGAN ONNX providers 설정: ['CUDAExecutionProvider', 'CPUExecutionProvider']
2025-08-30 01:55:23,132 - app.models.migan - INFO - MIGAN ONNX 세션 생성 완료. Providers: ['CUDAExecutionProvider', 'CPUExecutionProvider'] 2025-08-30 02:10:25.735198383 [W:onnxruntime:, transformer_memcpy.cc:74 ApplyImpl] 17 Memcpy nodes are added to the graph main_graph for CUDAExecutionProvider. It might have negative impact on performance (including unable to run CUDA graph). Set session_options.log_severity_level=1 to see the detail logs before this message.
2025-08-30 01:55:23,133 - app.models.migan - INFO - MIGAN ONNX model loaded successfully 2025-08-30 02:10:25,896 - app.models.migan - INFO - MIGAN ONNX 세션 생성 완료. Providers: ['CUDAExecutionProvider', 'CPUExecutionProvider']
2025-08-30 01:55:23,134 - app.core.session_pool - INFO - Successfully created session migan_1 2025-08-30 02:10:25,897 - app.models.migan - INFO - MIGAN ONNX model loaded successfully
2025-08-30 01:55:23,134 - app.core.session_pool - INFO - Pre-loading 2 sessions for rembg 2025-08-30 02:10:25,897 - app.core.session_pool - INFO - Successfully created session migan_0
2025-08-30 01:55:23,136 - app.core.session_pool - INFO - Creating new session rembg_0 for rembg... 2025-08-30 02:10:28,989 - app.core.session_pool - INFO - Session Created (migan). Status -> simple_lama: 2, migan: 0, rembg: 0 | VRAM: 0.0/0.0 GB (27.4%)
2025-08-30 01:55:23,137 - app.core.session_pool - INFO - Creating new session rembg_1 for rembg... 2025-08-30 02:10:28,992 - app.core.session_pool - INFO - Successfully created session migan_1
2025-08-30 01:55:23,139 - app.models.rembg_model - INFO - Loading REMBG model (birefnet-general-lite)... 2025-08-30 02:10:32,102 - app.core.session_pool - INFO - Session Created (migan). Status -> simple_lama: 2, migan: 0, rembg: 0 | VRAM: 0.0/0.0 GB (27.4%)
2025-08-30 01:55:25,141 - app.models.rembg_model - INFO - rembg 모듈 임포트 성공 (세션 생성은 지연 로딩) 2025-08-30 02:10:32,109 - app.core.session_pool - INFO - Pre-loading 2 sessions for rembg
2025-08-30 01:55:25,141 - app.models.rembg_model - INFO - 🔧 rembg 새 세션 생성 필요: birefnet-general-lite_cuda_True 2025-08-30 02:10:32,111 - app.core.session_pool - INFO - Creating new session rembg_0 for rembg...
2025-08-30 01:55:25,142 - app.models.rembg_model - WARNING - rembg.sessions import 실패, 기본 방식 사용 2025-08-30 02:10:32,118 - app.core.session_pool - INFO - Creating new session rembg_1 for rembg...
2025-08-30 01:55:25,142 - app.models.rembg_model - INFO - rembg 세션 생성 providers: ['CUDAExecutionProvider', 'CPUExecutionProvider'] 2025-08-30 02:10:32,120 - app.models.rembg_model - INFO - Loading REMBG model (birefnet-general-lite)...
2025-08-30 01:55:38,144 - app.models.rembg_model - INFO - ✅ rembg 'birefnet-general-lite' GPU 가속로 동작 (providers: ['CUDAExecutionProvider', 'CPUExecutionProvider']) 2025-08-30 02:10:34,236 - app.models.rembg_model - INFO - rembg 모듈 임포트 성공 (세션 생성은 지연 로딩)
2025-08-30 01:55:38,145 - app.models.rembg_model - INFO - REMBG model (birefnet-general-lite) loaded successfully 2025-08-30 02:10:34,236 - app.models.rembg_model - INFO - 🔧 rembg 새 세션 생성 필요: birefnet-general-lite_cuda_True
2025-08-30 01:55:38,146 - app.models.rembg_model - INFO - Loading REMBG model (birefnet-general-lite)... 2025-08-30 02:10:34,237 - app.models.rembg_model - WARNING - rembg.sessions import 실패, 기본 방식 사용
2025-08-30 01:55:38,146 - app.models.rembg_model - INFO - rembg 모듈 임포트 성공 (세션 생성은 지연 로딩) 2025-08-30 02:10:34,237 - app.models.rembg_model - INFO - rembg 세션 생성 providers: ['CUDAExecutionProvider', 'CPUExecutionProvider']
2025-08-30 01:55:38,147 - app.models.rembg_model - INFO - 🔧 rembg 새 세션 생성 필요: birefnet-general-lite_cuda_True 2025-08-30 02:10:47,102 - app.models.rembg_model - INFO - ✅ rembg 'birefnet-general-lite' GPU 가속로 동작 (providers: ['CUDAExecutionProvider', 'CPUExecutionProvider'])
2025-08-30 01:55:38,148 - app.models.rembg_model - WARNING - rembg.sessions import 실패, 기본 방식 사용 2025-08-30 02:10:47,103 - app.models.rembg_model - INFO - REMBG model (birefnet-general-lite) loaded successfully
2025-08-30 01:55:38,148 - app.models.rembg_model - INFO - rembg 세션 생성 providers: ['CUDAExecutionProvider', 'CPUExecutionProvider'] 2025-08-30 02:10:47,103 - app.models.rembg_model - INFO - Loading REMBG model (birefnet-general-lite)...
2025-08-30 01:55:50,692 - app.models.rembg_model - INFO - ✅ rembg 'birefnet-general-lite' GPU 가속로 동작 (providers: ['CUDAExecutionProvider', 'CPUExecutionProvider']) 2025-08-30 02:10:47,104 - app.models.rembg_model - INFO - rembg 모듈 임포트 성공 (세션 생성은 지연 로딩)
2025-08-30 01:55:50,693 - app.models.rembg_model - INFO - REMBG model (birefnet-general-lite) loaded successfully 2025-08-30 02:10:47,104 - app.models.rembg_model - INFO - 🔧 rembg 새 세션 생성 필요: birefnet-general-lite_cuda_True
2025-08-30 01:55:50,694 - app.core.session_pool - INFO - Successfully created session rembg_0 2025-08-30 02:10:47,105 - app.models.rembg_model - WARNING - rembg.sessions import 실패, 기본 방식 사용
2025-08-30 01:55:50,694 - app.core.session_pool - INFO - Successfully created session rembg_1 2025-08-30 02:10:47,105 - app.models.rembg_model - INFO - rembg 세션 생성 providers: ['CUDAExecutionProvider', 'CPUExecutionProvider']
2025-08-30 01:55:50,696 - app.core.session_pool - INFO - Session pools initialized successfully 2025-08-30 02:10:59,703 - app.models.rembg_model - INFO - ✅ rembg 'birefnet-general-lite' GPU 가속로 동작 (providers: ['CUDAExecutionProvider', 'CPUExecutionProvider'])
2025-08-30 01:55:50,697 - main - INFO - ✅ 세션 풀 초기화 완료 2025-08-30 02:10:59,704 - app.models.rembg_model - INFO - REMBG model (birefnet-general-lite) loaded successfully
2025-08-30 01:55:50,697 - app.core.worker_manager - INFO - Starting worker manager... 2025-08-30 02:10:59,705 - app.core.session_pool - INFO - Successfully created session rembg_0
2025-08-30 01:55:50,698 - app.core.worker_manager - INFO - Worker manager started with 10 workers 2025-08-30 02:11:02,815 - app.core.session_pool - INFO - Session Created (rembg). Status -> simple_lama: 2, migan: 2, rembg: 0 | VRAM: 0.0/0.0 GB (31.0%)
2025-08-30 01:55:50,698 - main - INFO - ✅ 워커 매니저 시작 완료 2025-08-30 02:11:02,817 - app.core.session_pool - INFO - Successfully created session rembg_1
2025-08-30 01:55:50,698 - app.core.batch_manager - INFO - Starting BatchManager... 2025-08-30 02:11:05,936 - app.core.session_pool - INFO - Session Created (rembg). Status -> simple_lama: 2, migan: 2, rembg: 0 | VRAM: 0.0/0.0 GB (31.0%)
2025-08-30 01:55:50,699 - app.core.batch_manager - INFO - BatchManager started successfully. 2025-08-30 02:11:05,944 - app.core.session_pool - INFO - Session pools initialized successfully
2025-08-30 01:55:50,699 - main - INFO - ✅ 배치 관리자 시작 완료 2025-08-30 02:11:05,945 - main - INFO - ✅ 세션 풀 초기화 완료
2025-08-30 01:55:50,699 - main - INFO - 🎉 인페인팅 서버 시작 완료! 2025-08-30 02:11:05,946 - app.core.worker_manager - INFO - Starting worker manager...
2025-08-30 01:55:50,700 - app.utils.discord_notifier - WARNING - Discord 웹훅 URL이 설정되지 않아 알림을 보낼 수 없습니다. 2025-08-30 02:11:05,949 - app.core.worker_manager - INFO - Worker manager started with 10 workers
2025-08-30 01:55:50,700 - app.core.session_pool - INFO - Idle session reaper started. Timeout: 1800s, Check Interval: 60s 2025-08-30 02:11:05,949 - main - INFO - ✅ 워커 매니저 시작 완료
2025-08-30 02:11:05,950 - app.core.batch_manager - INFO - Starting BatchManager...
2025-08-30 02:11:05,951 - app.core.batch_manager - INFO - BatchManager started successfully.
2025-08-30 02:11:05,951 - main - INFO - ✅ 배치 관리자 시작 완료
2025-08-30 02:11:05,952 - main - INFO - 🎉 인페인팅 서버 시작 완료!
2025-08-30 02:11:05,954 - app.utils.discord_notifier - WARNING - Discord 웹훅 URL이 설정되지 않아 알림을 보낼 수 없습니다.
2025-08-30 02:11:05,955 - app.core.session_pool - INFO - Idle session reaper started. Timeout: 1800s, Check Interval: 60s
INFO: Application startup complete. INFO: Application startup complete.
2025-08-30 01:55:50,701 - uvicorn.error - INFO - Application startup complete. 2025-08-30 02:11:09,078 - uvicorn.error - INFO - Application startup complete.
INFO: Uvicorn running on http://0.0.0.0:8008 (Press CTRL+C to quit) INFO: Uvicorn running on http://0.0.0.0:8008 (Press CTRL+C to quit)
2025-08-30 01:55:50,702 - uvicorn.error - INFO - Uvicorn running on http://0.0.0.0:8008 (Press CTRL+C to quit) 2025-08-30 02:11:09,089 - uvicorn.error - INFO - Uvicorn running on http://0.0.0.0:8008 (Press CTRL+C to quit)
INFO: 127.0.0.1:52600 - "GET /api/v1/health HTTP/1.1" 200 OK INFO: 127.0.0.1:55558 - "GET /api/v1/health HTTP/1.1" 200 OK
INFO: 127.0.0.1:52608 - "GET /api/v1/health HTTP/1.1" 200 OK INFO: 127.0.0.1:55560 - "GET /api/v1/health HTTP/1.1" 200 OK
2025-08-30 01:56:15,715 - app.core.batch_manager - INFO - Creating a new batch with 4 jobs. INFO: 127.0.0.1:36726 - "GET /api/v1/stats HTTP/1.1" 200 OK
2025-08-30 01:56:15,881 - app.models.simple_lama - INFO - 실제 SimpleLama 모델로 4개 이미지 인페인팅 수행 INFO: 127.0.0.1:53708 - "GET /api/v1/stats HTTP/1.1" 200 OK
2025-08-30 01:56:21,625 - app.core.worker_manager - INFO - 'simple-lama' batch of 4 processed in 5.908s (avg: 1.477s/image) INFO: 127.0.0.1:60012 - "GET /api/v1/stats HTTP/1.1" 200 OK
2025-08-30 01:56:21,626 - app.core.batch_manager - INFO - Successfully processed batch of 4 jobs. INFO: 127.0.0.1:39570 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:39480 - "POST /api/v1/inpaint HTTP/1.1" 200 OK INFO: 127.0.0.1:48768 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:39488 - "POST /api/v1/inpaint HTTP/1.1" 200 OK INFO: 127.0.0.1:44610 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:39500 - "POST /api/v1/inpaint HTTP/1.1" 200 OK INFO: 127.0.0.1:44116 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:39516 - "POST /api/v1/inpaint HTTP/1.1" 200 OK INFO: 127.0.0.1:45482 - "GET /api/v1/stats HTTP/1.1" 200 OK
2025-08-30 01:56:24,783 - app.core.batch_manager - INFO - Creating a new batch with 2 jobs. INFO: 127.0.0.1:53298 - "GET /api/v1/stats HTTP/1.1" 200 OK
2025-08-30 01:56:24,995 - app.models.simple_lama - INFO - 실제 SimpleLama 모델로 2개 이미지 인페인팅 수행 INFO: 127.0.0.1:55100 - "GET /api/v1/stats HTTP/1.1" 200 OK
2025-08-30 01:56:39,252 - app.core.worker_manager - INFO - 'simple-lama' batch of 2 processed in 14.460s (avg: 7.230s/image) INFO: 127.0.0.1:35256 - "GET /api/v1/stats HTTP/1.1" 200 OK
2025-08-30 01:56:39,253 - app.core.batch_manager - INFO - Successfully processed batch of 2 jobs. INFO: 127.0.0.1:55510 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:39524 - "POST /api/v1/inpaint HTTP/1.1" 200 OK INFO: 127.0.0.1:59790 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:39536 - "POST /api/v1/inpaint HTTP/1.1" 200 OK INFO: 127.0.0.1:51514 - "GET /api/v1/stats HTTP/1.1" 200 OK
2025-08-30 01:56:39,367 - app.core.batch_manager - INFO - Creating a new batch with 2 jobs. INFO: 127.0.0.1:38750 - "GET /api/v1/stats HTTP/1.1" 200 OK
2025-08-30 01:56:39,469 - app.models.simple_lama - INFO - 실제 SimpleLama 모델로 2개 이미지 인페인팅 수행 INFO: 127.0.0.1:54862 - "GET /api/v1/stats HTTP/1.1" 200 OK
2025-08-30 01:56:40,764 - app.core.worker_manager - INFO - 'simple-lama' batch of 2 processed in 1.396s (avg: 0.698s/image) INFO: 127.0.0.1:46646 - "GET /api/v1/stats HTTP/1.1" 200 OK
2025-08-30 01:56:40,765 - app.core.batch_manager - INFO - Successfully processed batch of 2 jobs. INFO: 127.0.0.1:46656 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:39546 - "POST /api/v1/inpaint HTTP/1.1" 200 OK INFO: 127.0.0.1:36272 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:39550 - "POST /api/v1/inpaint HTTP/1.1" 200 OK INFO: 127.0.0.1:41276 - "GET /api/v1/stats HTTP/1.1" 200 OK
2025-08-30 01:57:35,001 - app.core.batch_manager - INFO - Creating a new batch with 4 jobs. INFO: 127.0.0.1:41282 - "GET /api/v1/stats HTTP/1.1" 200 OK
2025-08-30 01:57:35,213 - app.models.simple_lama - INFO - 실제 SimpleLama 모델로 4개 이미지 인페인팅 수행 INFO: 127.0.0.1:57580 - "GET /api/v1/stats HTTP/1.1" 200 OK
2025-08-30 01:57:37,476 - app.core.worker_manager - INFO - 'simple-lama' batch of 4 processed in 2.472s (avg: 0.618s/image) INFO: 127.0.0.1:58304 - "GET /api/v1/stats HTTP/1.1" 200 OK
2025-08-30 01:57:37,480 - app.core.batch_manager - INFO - Successfully processed batch of 4 jobs. INFO: 127.0.0.1:35488 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:39274 - "POST /api/v1/inpaint HTTP/1.1" 200 OK INFO: 127.0.0.1:51250 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:39278 - "POST /api/v1/inpaint HTTP/1.1" 200 OK INFO: 127.0.0.1:51262 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:39286 - "POST /api/v1/inpaint HTTP/1.1" 200 OK INFO: 127.0.0.1:34784 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:39296 - "POST /api/v1/inpaint HTTP/1.1" 200 OK INFO: 127.0.0.1:34788 - "GET /api/v1/stats HTTP/1.1" 200 OK
2025-08-30 01:57:37,511 - app.core.batch_manager - INFO - Creating a new batch with 4 jobs. INFO: 127.0.0.1:53174 - "GET /api/v1/stats HTTP/1.1" 200 OK
2025-08-30 01:57:37,735 - app.models.simple_lama - INFO - 실제 SimpleLama 모델로 4개 이미지 인페인팅 수행 INFO: 127.0.0.1:37074 - "GET /api/v1/stats HTTP/1.1" 200 OK
2025-08-30 01:57:39,686 - app.core.worker_manager - INFO - 'simple-lama' batch of 4 processed in 2.173s (avg: 0.543s/image) INFO: 127.0.0.1:42532 - "GET /api/v1/stats HTTP/1.1" 200 OK
2025-08-30 01:57:39,687 - app.core.batch_manager - INFO - Successfully processed batch of 4 jobs. INFO: 127.0.0.1:37912 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:39308 - "POST /api/v1/inpaint HTTP/1.1" 200 OK INFO: 127.0.0.1:50782 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:39322 - "POST /api/v1/inpaint HTTP/1.1" 200 OK INFO: 127.0.0.1:41282 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:39330 - "POST /api/v1/inpaint HTTP/1.1" 200 OK INFO: 127.0.0.1:50348 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:39334 - "POST /api/v1/inpaint HTTP/1.1" 200 OK INFO: 127.0.0.1:50614 - "GET /api/v1/stats HTTP/1.1" 200 OK
2025-08-30 01:57:47,368 - app.core.batch_manager - INFO - Creating a new batch with 4 jobs. INFO: 127.0.0.1:50620 - "GET /api/v1/stats HTTP/1.1" 200 OK
2025-08-30 01:57:47,620 - app.models.simple_lama - INFO - 실제 SimpleLama 모델로 4개 이미지 인페인팅 수행 INFO: 127.0.0.1:39554 - "GET /api/v1/stats HTTP/1.1" 200 OK
2025-08-30 01:57:49,769 - app.core.worker_manager - INFO - 'simple-lama' batch of 4 processed in 2.399s (avg: 0.600s/image) INFO: 127.0.0.1:34472 - "GET /api/v1/stats HTTP/1.1" 200 OK
2025-08-30 01:57:49,770 - app.core.batch_manager - INFO - Successfully processed batch of 4 jobs. INFO: 127.0.0.1:59332 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:47538 - "POST /api/v1/inpaint HTTP/1.1" 200 OK INFO: 127.0.0.1:38170 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:47542 - "POST /api/v1/inpaint HTTP/1.1" 200 OK INFO: 127.0.0.1:54408 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:47554 - "POST /api/v1/inpaint HTTP/1.1" 200 OK INFO: 127.0.0.1:53164 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:47566 - "POST /api/v1/inpaint HTTP/1.1" 200 OK INFO: 127.0.0.1:57394 - "GET /api/v1/stats HTTP/1.1" 200 OK
2025-08-30 01:57:49,800 - app.core.batch_manager - INFO - Creating a new batch with 4 jobs. INFO: 127.0.0.1:57410 - "GET /api/v1/stats HTTP/1.1" 200 OK
2025-08-30 01:57:50,022 - app.models.simple_lama - INFO - 실제 SimpleLama 모델로 4개 이미지 인페인팅 수행 INFO: 127.0.0.1:59078 - "GET /api/v1/stats HTTP/1.1" 200 OK
2025-08-30 01:57:51,985 - app.core.worker_manager - INFO - 'simple-lama' batch of 4 processed in 2.184s (avg: 0.546s/image) INFO: 127.0.0.1:54256 - "GET /api/v1/stats HTTP/1.1" 200 OK
2025-08-30 01:57:51,986 - app.core.batch_manager - INFO - Successfully processed batch of 4 jobs. INFO: 127.0.0.1:54262 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:47580 - "POST /api/v1/inpaint HTTP/1.1" 200 OK INFO: 127.0.0.1:38444 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:47590 - "POST /api/v1/inpaint HTTP/1.1" 200 OK INFO: 127.0.0.1:52920 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:47604 - "POST /api/v1/inpaint HTTP/1.1" 200 OK INFO: 127.0.0.1:56504 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:47608 - "POST /api/v1/inpaint HTTP/1.1" 200 OK INFO: 127.0.0.1:52406 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:52412 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:48756 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:48766 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:34636 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:38454 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:38934 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:41628 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:49770 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:45282 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:55420 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:51390 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:51404 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:43614 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:41008 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:38196 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:40018 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:34270 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:49372 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:50038 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:34032 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:34036 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:49796 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:49812 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:49718 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:60908 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:48864 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:41666 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:41674 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:35000 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:35008 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:51984 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:57428 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:53860 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:42404 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:46700 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:38100 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:58730 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:54074 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:54088 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:60366 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:50934 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:34926 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:36874 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:46600 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:36062 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:49560 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:55354 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:55364 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:36702 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:36706 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:56446 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:33032 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:44762 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:60008 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:48852 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:37748 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:41326 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:57200 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:57872 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:54214 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:53410 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:53424 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:49892 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:58442 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:54808 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:37762 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:34838 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:42518 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:56664 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:55072 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:55076 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:53762 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:53766 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:44150 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:39358 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:34764 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:52880 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:52830 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:43032 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:40018 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:40024 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:55202 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:32946 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:55182 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:37200 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:51956 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:52210 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:52270 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:52286 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:51302 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:51870 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:46236 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:59736 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:57162 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:37400 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:51362 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:44042 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:44048 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:49412 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:49420 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:41564 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:41144 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:47504 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:58604 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:38794 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:36922 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:57216 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:57228 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:39264 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:55712 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:59114 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:57248 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:39214 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:39044 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:33986 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:40552 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:40566 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:45808 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:34042 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:54826 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:38828 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:57722 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:56354 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:36156 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:36172 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:56848 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:56852 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:39782 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:46406 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:58570 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:42250 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:48538 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:51426 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:38244 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:58658 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:58670 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:41604 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:52434 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:57418 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:40856 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:41572 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:53532 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:56000 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:56002 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:41946 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:49050 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:34028 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:49268 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:40244 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:49940 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:49078 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:49084 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:35546 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:35558 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:46570 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:44484 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:44032 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:56582 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:43298 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:59146 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:50534 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:51420 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:51428 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:46468 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:51714 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:44818 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:46466 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:54190 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:57976 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:47458 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:47460 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:45636 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:46196 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:33720 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:58076 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:46556 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:49560 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:48194 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:36244 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:42566 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:46464 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:36450 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:58426 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:60808 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:51264 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:53754 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:53760 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:56466 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:34046 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:58062 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:46402 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:39300 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:33604 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:54546 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:54558 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:43954 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:43090 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:56094 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:47164 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:53334 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:58630 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:48202 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:33170 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:50170 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:48892 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:48908 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:40656 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:58154 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:46266 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:33478 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:37912 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:53664 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:53670 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:59390 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:41774 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:52856 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:57860 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:56684 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:38300 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:45304 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:60212 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:60218 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:46100 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:49412 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:44778 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:36804 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:55340 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:37518 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:58284 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:60668 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:57058 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:45546 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:45558 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:56180 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:43278 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:57874 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:50746 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:41260 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:33382 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:34948 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:34954 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:49512 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:51068 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:49218 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:33938 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:57462 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:48304 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:47720 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:47728 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:37714 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:59332 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:59462 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:45800 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:57226 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:35846 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:43320 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:37916 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:49008 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:36094 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:36102 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:59426 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:44388 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:41486 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:49612 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:57146 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:39740 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:46790 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:46806 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:47512 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:43230 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:53444 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:34750 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:39048 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:52468 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:48852 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:48858 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:48968 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:44402 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:51234 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:51056 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:41206 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:46510 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:38972 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:51590 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:35024 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:52200 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:52208 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:36938 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:46024 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:35716 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:42378 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:54166 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:54818 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:53232 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:53242 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:40904 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:41318 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:51176 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:34610 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:52708 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:54058 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:42420 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:42430 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:33804 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:39280 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:53676 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:53852 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:36042 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:54014 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:53332 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:36310 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:35844 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:40956 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:40958 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:51246 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:39372 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:34540 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:36790 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:58782 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:37654 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:51844 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:58414 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:58422 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:34146 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:52790 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:46204 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:37636 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:37514 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:53850 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:53856 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:51390 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:46964 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:57018 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:39958 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:56264 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:40098 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:47772 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:53578 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:48032 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:50904 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:50920 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:34566 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:49614 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:46572 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:42564 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:44410 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:46446 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:33856 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:55604 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:55618 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:43974 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:42664 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:51384 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:58138 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:47250 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:41730 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:36338 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:45778 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:34104 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:56318 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:33730 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:37716 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:39452 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:48850 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:48862 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:53762 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:55588 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:58852 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:49540 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:40432 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:58414 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:58420 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:54126 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:50882 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:33572 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:53080 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:56496 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:46126 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:56566 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:33288 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:33302 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:37186 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:37200 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:35882 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:58422 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:51442 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:54204 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:56894 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:52896 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:42498 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:58940 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:58952 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:58500 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:44118 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:54404 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:51042 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:53054 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:46934 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:46936 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:32962 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:60000 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:59632 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:44440 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:54052 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:47242 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:33616 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:53566 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:53580 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:59032 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:59046 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:35516 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:49068 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:59348 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:60702 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:52170 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:53048 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:51518 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:42688 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:42702 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:34804 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:58830 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:55590 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:52850 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:46674 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:44804 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:50896 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:50902 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:47388 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:51336 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:59850 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:54708 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:45978 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:39996 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:60744 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:60760 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:53322 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:60648 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:60662 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:44348 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:55794 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:37678 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:44958 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:60594 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:45856 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:46264 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:46274 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:54158 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:59522 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:50704 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:41394 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:47508 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:33236 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:45186 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:45196 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:35298 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:57424 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:43936 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:42858 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:39752 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:39768 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:45450 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:50728 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:38352 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:58312 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:58326 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:36000 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:54230 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:39140 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:39142 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:44058 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:39486 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:44454 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:53372 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:60494 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:56938 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:38902 - "GET /api/v1/stats HTTP/1.1" 200 OK
INFO: 127.0.0.1:38904 - "GET /api/v1/stats HTTP/1.1" 200 OK

View File

@ -1 +1 @@
77869 81535

View File

@ -1,12 +1,622 @@
INFO: Started server process [78184] Failed to initialize jtop: The jtop.service is not active. Please run:
sudo systemctl restart jtop.service
INFO: Started server process [81928]
INFO: Waiting for application startup. INFO: Waiting for application startup.
Fan control not available Fan control not available
INFO: Application startup complete. INFO: Application startup complete.
INFO: Uvicorn running on http://0.0.0.0:8888 (Press CTRL+C to quit) INFO: Uvicorn running on http://0.0.0.0:8888 (Press CTRL+C to quit)
INFO: 127.0.0.1:52490 - "GET /api/simple HTTP/1.1" 200 OK INFO: 127.0.0.1:52212 - "GET /api/simple HTTP/1.1" 200 OK
Task exception was never retrieved Task exception was never retrieved
future: <Task finished name='Task-4' coro=<health_check_and_restart() done, defined at /home/ckh08045/work/inpaintServer/app/monitoring/dashboard.py:2084> exception=AttributeError("module 'asyncio' has no attribute 'to_thread'")> future: <Task finished name='Task-4' coro=<health_check_and_restart() done, defined at /home/ckh08045/work/inpaintServer/app/monitoring/dashboard.py:2084> exception=AttributeError("module 'asyncio' has no attribute 'to_thread'")>
Traceback (most recent call last): Traceback (most recent call last):
File "/home/ckh08045/work/inpaintServer/app/monitoring/dashboard.py", line 2094, in health_check_and_restart File "/home/ckh08045/work/inpaintServer/app/monitoring/dashboard.py", line 2094, in health_check_and_restart
response = await asyncio.to_thread(requests.get, health_url, timeout=10) response = await asyncio.to_thread(requests.get, health_url, timeout=10)
AttributeError: module 'asyncio' has no attribute 'to_thread' AttributeError: module 'asyncio' has no attribute 'to_thread'
INFO: 192.168.0.119:51988 - "GET / HTTP/1.1" 200 OK
INFO: ('192.168.0.119', 51999) - "WebSocket /ws" [accepted]
INFO: connection open
INFO: 192.168.0.119:51988 - "GET /api/logs?lines=50 HTTP/1.1" 200 OK
INFO: 192.168.0.119:51989 - "GET /api/performance-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:52012 - "GET /api/system-alerts HTTP/1.1" 200 OK
INFO: 192.168.0.119:52013 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:52012 - "GET /api/system-alerts HTTP/1.1" 200 OK
INFO: 192.168.0.119:52013 - "GET /api/logs?lines=50 HTTP/1.1" 200 OK
INFO: 192.168.0.119:52012 - "GET /api/system-alerts HTTP/1.1" 200 OK
INFO: 192.168.0.119:52058 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:52061 - "GET /api/performance-stats HTTP/1.1" 200 OK
INFO: ('192.168.0.119', 52068) - "WebSocket /ws" [accepted]
INFO: 192.168.0.119:52013 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
INFO: connection closed
INFO: connection open
INFO: 192.168.0.119:52071 - "GET /api/system-alerts HTTP/1.1" 200 OK
INFO: 192.168.0.119:52073 - "GET /api/system-alerts HTTP/1.1" 200 OK
INFO: 192.168.0.119:52012 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:52061 - "GET /api/logs?lines=50 HTTP/1.1" 200 OK
INFO: 192.168.0.119:52058 - "GET /api/performance-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:52071 - "GET /api/system-alerts HTTP/1.1" 200 OK
INFO: 192.168.0.119:52073 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:52071 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:52073 - "GET /api/logs?lines=50 HTTP/1.1" 200 OK
INFO: 192.168.0.119:52071 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:52322 - "GET /api/performance-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:52323 - "GET /api/system-alerts HTTP/1.1" 200 OK
INFO: connection closed
INFO: ('192.168.0.119', 52269) - "WebSocket /ws" [accepted]
INFO: connection open
INFO: 192.168.0.119:52513 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:52514 - "GET /api/system-alerts HTTP/1.1" 200 OK
INFO: 192.168.0.119:52513 - "GET /api/logs?lines=50 HTTP/1.1" 200 OK
INFO: 192.168.0.119:52325 - "GET /api/performance-stats HTTP/1.1" 200 OK
INFO: connection closed
INFO: ('192.168.0.119', 52540) - "WebSocket /ws" [accepted]
INFO: connection open
INFO: 192.168.0.119:52650 - "GET /api/logs?lines=50 HTTP/1.1" 200 OK
INFO: 192.168.0.119:52651 - "GET /api/performance-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:52651 - "GET /api/logs?lines=50 HTTP/1.1" 200 OK
INFO: 192.168.0.119:52650 - "GET /api/performance-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:52736 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:52739 - "GET /api/system-alerts HTTP/1.1" 200 OK
INFO: 192.168.0.119:52970 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:52986 - "GET /api/system-alerts HTTP/1.1" 200 OK
INFO: 192.168.0.119:52988 - "GET /api/logs?lines=50 HTTP/1.1" 200 OK
INFO: 192.168.0.119:52989 - "GET /api/performance-stats HTTP/1.1" 200 OK
브로드캐스트 오류: list.remove(x): x not in list
INFO: connection closed
INFO: ('192.168.0.119', 53024) - "WebSocket /ws" [accepted]
INFO: connection open
INFO: 192.168.0.119:53198 - "GET /api/logs?lines=50 HTTP/1.1" 200 OK
INFO: 192.168.0.119:53207 - "GET /api/performance-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:53212 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:53215 - "GET /api/system-alerts HTTP/1.1" 200 OK
브로드캐스트 오류: list.remove(x): x not in list
INFO: connection closed
INFO: ('192.168.0.119', 53256) - "WebSocket /ws" [accepted]
INFO: connection open
INFO: 192.168.0.119:53408 - "GET /api/logs?lines=50 HTTP/1.1" 200 OK
INFO: 192.168.0.119:53411 - "GET /api/performance-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:53422 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:53423 - "GET /api/system-alerts HTTP/1.1" 200 OK
INFO: 192.168.0.119:53657 - "GET /api/logs?lines=50 HTTP/1.1" 200 OK
INFO: 192.168.0.119:53666 - "GET /api/performance-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:53671 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:53672 - "GET /api/system-alerts HTTP/1.1" 200 OK
브로드캐스트 오류: list.remove(x): x not in list
INFO: connection closed
INFO: ('192.168.0.119', 53746) - "WebSocket /ws" [accepted]
INFO: connection open
INFO: 192.168.0.119:53957 - "GET /api/logs?lines=50 HTTP/1.1" 200 OK
INFO: 192.168.0.119:53971 - "GET /api/performance-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:53975 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:53977 - "GET /api/system-alerts HTTP/1.1" 200 OK
브로드캐스트 오류: list.remove(x): x not in list
INFO: connection closed
INFO: ('192.168.0.119', 54029) - "WebSocket /ws" [accepted]
INFO: connection open
INFO: 192.168.0.119:54315 - "GET /api/logs?lines=50 HTTP/1.1" 200 OK
INFO: 192.168.0.119:54323 - "GET /api/performance-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:54325 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:54326 - "GET /api/system-alerts HTTP/1.1" 200 OK
INFO: 192.168.0.119:54569 - "GET /api/logs?lines=50 HTTP/1.1" 200 OK
INFO: 192.168.0.119:54570 - "GET /api/performance-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:54571 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:54572 - "GET /api/system-alerts HTTP/1.1" 200 OK
INFO: 192.168.0.119:54867 - "GET /api/logs?lines=50 HTTP/1.1" 200 OK
INFO: 192.168.0.119:54872 - "GET /api/performance-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:54875 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:54876 - "GET /api/system-alerts HTTP/1.1" 200 OK
INFO: 192.168.0.119:55108 - "GET /api/logs?lines=50 HTTP/1.1" 200 OK
INFO: 192.168.0.119:55110 - "GET /api/performance-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:55111 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:55112 - "GET /api/system-alerts HTTP/1.1" 200 OK
브로드캐스트 오류: list.remove(x): x not in list
INFO: connection closed
INFO: ('192.168.0.119', 55157) - "WebSocket /ws" [accepted]
INFO: connection open
INFO: 192.168.0.119:55384 - "GET /api/logs?lines=50 HTTP/1.1" 200 OK
INFO: 192.168.0.119:55394 - "GET /api/performance-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:55402 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:55401 - "GET /api/system-alerts HTTP/1.1" 200 OK
INFO: 192.168.0.119:55632 - "GET /api/logs?lines=50 HTTP/1.1" 200 OK
INFO: 192.168.0.119:55637 - "GET /api/performance-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:55644 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:55647 - "GET /api/system-alerts HTTP/1.1" 200 OK
INFO: 192.168.0.119:55866 - "GET /api/logs?lines=50 HTTP/1.1" 200 OK
INFO: 192.168.0.119:55868 - "GET /api/performance-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:55869 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:55872 - "GET /api/system-alerts HTTP/1.1" 200 OK
INFO: 192.168.0.119:55866 - "GET /api/logs?lines=50 HTTP/1.1" 200 OK
INFO: 192.168.0.119:55868 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:55869 - "GET /api/system-alerts HTTP/1.1" 200 OK
INFO: 192.168.0.119:55866 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:55868 - "GET /api/system-alerts HTTP/1.1" 200 OK
INFO: 192.168.0.119:55920 - "GET /api/performance-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:55869 - "GET /api/system-alerts HTTP/1.1" 200 OK
INFO: 192.168.0.119:55920 - "GET /api/system-alerts HTTP/1.1" 200 OK
브로드캐스트 오류: list.remove(x): x not in list
INFO: 192.168.0.119:55977 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:55978 - "GET /api/logs?lines=50 HTTP/1.1" 200 OK
INFO: connection closed
INFO: ('192.168.0.119', 55986) - "WebSocket /ws" [accepted]
INFO: connection open
INFO: 192.168.0.119:55920 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:55977 - "GET /api/logs?lines=50 HTTP/1.1" 200 OK
INFO: 192.168.0.119:55978 - "GET /api/system-alerts HTTP/1.1" 200 OK
INFO: 192.168.0.119:56048 - "GET /api/system-alerts HTTP/1.1" 200 OK
INFO: 192.168.0.119:56049 - "GET /api/performance-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:55920 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:55978 - "GET /api/system-alerts HTTP/1.1" 200 OK
INFO: 192.168.0.119:56048 - "GET /api/performance-stats HTTP/1.1" 200 OK
모델 성능 통계 조회 중 예외 발생: HTTPConnectionPool(host='0.0.0.0', port=8008): Read timed out. (read timeout=2)
INFO: 192.168.0.119:56074 - "GET /api/system-alerts HTTP/1.1" 200 OK
INFO: 192.168.0.119:56226 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:56227 - "GET /api/logs?lines=50 HTTP/1.1" 200 OK
INFO: 192.168.0.119:56228 - "GET /api/performance-stats HTTP/1.1" 200 OK
브로드캐스트 오류: list.remove(x): x not in list
INFO: connection closed
INFO: ('192.168.0.119', 56285) - "WebSocket /ws" [accepted]
INFO: connection open
INFO: 192.168.0.119:56468 - "GET /api/logs?lines=50 HTTP/1.1" 200 OK
INFO: 192.168.0.119:56470 - "GET /api/performance-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:56472 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:56473 - "GET /api/system-alerts HTTP/1.1" 200 OK
INFO: 192.168.0.119:56638 - "GET /api/logs?lines=50 HTTP/1.1" 200 OK
INFO: 192.168.0.119:56642 - "GET /api/performance-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:56647 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:56648 - "GET /api/system-alerts HTTP/1.1" 200 OK
브로드캐스트 오류: list.remove(x): x not in list
INFO: connection closed
INFO: ('192.168.0.119', 56673) - "WebSocket /ws" [accepted]
INFO: connection open
INFO: 192.168.0.119:56843 - "GET /api/logs?lines=50 HTTP/1.1" 200 OK
INFO: 192.168.0.119:56853 - "GET /api/performance-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:56855 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:56856 - "GET /api/system-alerts HTTP/1.1" 200 OK
브로드캐스트 오류: list.remove(x): x not in list
INFO: connection closed
INFO: ('192.168.0.119', 56941) - "WebSocket /ws" [accepted]
INFO: connection open
INFO: 192.168.0.119:57020 - "GET /api/logs?lines=50 HTTP/1.1" 200 OK
INFO: 192.168.0.119:57033 - "GET /api/performance-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:57036 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:57037 - "GET /api/system-alerts HTTP/1.1" 200 OK
브로드캐스트 오류: list.remove(x): x not in list
INFO: connection closed
INFO: ('192.168.0.119', 57083) - "WebSocket /ws" [accepted]
INFO: connection open
INFO: 192.168.0.119:57222 - "GET /api/logs?lines=50 HTTP/1.1" 200 OK
INFO: 192.168.0.119:57227 - "GET /api/performance-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:57242 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:57241 - "GET /api/system-alerts HTTP/1.1" 200 OK
INFO: 192.168.0.119:57414 - "GET /api/logs?lines=50 HTTP/1.1" 200 OK
INFO: 192.168.0.119:57425 - "GET /api/performance-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:57427 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:57428 - "GET /api/system-alerts HTTP/1.1" 200 OK
브로드캐스트 오류: list.remove(x): x not in list
INFO: connection closed
INFO: ('192.168.0.119', 57457) - "WebSocket /ws" [accepted]
INFO: connection open
INFO: 192.168.0.119:57548 - "GET /api/logs?lines=50 HTTP/1.1" 200 OK
INFO: 192.168.0.119:57550 - "GET /api/performance-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:57554 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:57557 - "GET /api/system-alerts HTTP/1.1" 200 OK
브로드캐스트 오류: list.remove(x): x not in list
INFO: connection closed
INFO: ('192.168.0.119', 57571) - "WebSocket /ws" [accepted]
INFO: connection open
INFO: 192.168.0.119:57670 - "GET /api/logs?lines=50 HTTP/1.1" 200 OK
INFO: 192.168.0.119:57674 - "GET /api/performance-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:57686 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:57685 - "GET /api/system-alerts HTTP/1.1" 200 OK
INFO: 192.168.0.119:57797 - "GET /api/logs?lines=50 HTTP/1.1" 200 OK
INFO: 192.168.0.119:57810 - "GET /api/performance-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:57812 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:57816 - "GET /api/system-alerts HTTP/1.1" 200 OK
브로드캐스트 오류: list.remove(x): x not in list
INFO: connection closed
INFO: ('192.168.0.119', 57833) - "WebSocket /ws" [accepted]
INFO: connection open
INFO: 192.168.0.119:57981 - "GET /api/logs?lines=50 HTTP/1.1" 200 OK
INFO: 192.168.0.119:57983 - "GET /api/performance-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:57985 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:57986 - "GET /api/system-alerts HTTP/1.1" 200 OK
브로드캐스트 오류: list.remove(x): x not in list
INFO: connection closed
INFO: ('192.168.0.119', 58003) - "WebSocket /ws" [accepted]
INFO: connection open
INFO: 192.168.0.119:58136 - "GET /api/logs?lines=50 HTTP/1.1" 200 OK
INFO: 192.168.0.119:58140 - "GET /api/performance-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:58147 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:58149 - "GET /api/system-alerts HTTP/1.1" 200 OK
브로드캐스트 오류: list.remove(x): x not in list
INFO: connection closed
INFO: ('192.168.0.119', 58168) - "WebSocket /ws" [accepted]
INFO: connection open
INFO: 192.168.0.119:58234 - "GET /api/logs?lines=50 HTTP/1.1" 200 OK
INFO: 192.168.0.119:58245 - "GET /api/performance-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:58247 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:58248 - "GET /api/system-alerts HTTP/1.1" 200 OK
INFO: 192.168.0.119:58397 - "GET /api/logs?lines=50 HTTP/1.1" 200 OK
INFO: 192.168.0.119:58399 - "GET /api/performance-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:58402 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:58403 - "GET /api/system-alerts HTTP/1.1" 200 OK
브로드캐스트 오류: list.remove(x): x not in list
INFO: connection closed
INFO: ('192.168.0.119', 58426) - "WebSocket /ws" [accepted]
INFO: connection open
INFO: 192.168.0.119:58508 - "GET /api/logs?lines=50 HTTP/1.1" 200 OK
INFO: 192.168.0.119:58515 - "GET /api/performance-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:58519 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:58520 - "GET /api/system-alerts HTTP/1.1" 200 OK
브로드캐스트 오류: list.remove(x): x not in list
INFO: connection closed
INFO: ('192.168.0.119', 58533) - "WebSocket /ws" [accepted]
INFO: connection open
INFO: 192.168.0.119:58619 - "GET /api/logs?lines=50 HTTP/1.1" 200 OK
INFO: 192.168.0.119:58630 - "GET /api/performance-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:58632 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:58633 - "GET /api/system-alerts HTTP/1.1" 200 OK
브로드캐스트 오류: list.remove(x): x not in list
INFO: connection closed
INFO: ('192.168.0.119', 58663) - "WebSocket /ws" [accepted]
INFO: connection open
INFO: 192.168.0.119:58767 - "GET /api/logs?lines=50 HTTP/1.1" 200 OK
INFO: 192.168.0.119:58775 - "GET /api/performance-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:58781 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:58782 - "GET /api/system-alerts HTTP/1.1" 200 OK
INFO: 192.168.0.119:58950 - "GET /api/logs?lines=50 HTTP/1.1" 200 OK
INFO: 192.168.0.119:58952 - "GET /api/performance-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:58955 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:58956 - "GET /api/system-alerts HTTP/1.1" 200 OK
브로드캐스트 오류: list.remove(x): x not in list
INFO: connection closed
INFO: ('192.168.0.119', 58962) - "WebSocket /ws" [accepted]
INFO: connection open
INFO: 192.168.0.119:59068 - "GET /api/logs?lines=50 HTTP/1.1" 200 OK
INFO: 192.168.0.119:59069 - "GET /api/performance-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:59070 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:59071 - "GET /api/system-alerts HTTP/1.1" 200 OK
INFO: 192.168.0.119:59068 - "GET /api/logs?lines=50 HTTP/1.1" 200 OK
INFO: 192.168.0.119:59069 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:59070 - "GET /api/system-alerts HTTP/1.1" 200 OK
INFO: 192.168.0.119:59146 - "GET /api/performance-stats HTTP/1.1" 200 OK
브로드캐스트 오류: list.remove(x): x not in list
INFO: connection closed
INFO: ('192.168.0.119', 59139) - "WebSocket /ws" [accepted]
INFO: 192.168.0.119:59068 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:59069 - "GET /api/system-alerts HTTP/1.1" 200 OK
INFO: connection open
INFO: 192.168.0.119:59068 - "GET /api/system-alerts HTTP/1.1" 200 OK
INFO: 192.168.0.119:59146 - "GET /api/logs?lines=50 HTTP/1.1" 200 OK
INFO: 192.168.0.119:59070 - "GET /api/performance-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:59069 - "GET /api/system-alerts HTTP/1.1" 200 OK
INFO: 192.168.0.119:59070 - "GET /api/system-alerts HTTP/1.1" 200 OK
INFO: 192.168.0.119:59192 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:59253 - "GET /api/system-alerts HTTP/1.1" 200 OK
INFO: 192.168.0.119:59277 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
브로드캐스트 오류: list.remove(x): x not in list
INFO: connection closed
INFO: ('192.168.0.119', 59272) - "WebSocket /ws" [accepted]
INFO: connection open
INFO: 192.168.0.119:59298 - "GET /api/system-alerts HTTP/1.1" 200 OK
INFO: 192.168.0.119:59416 - "GET /api/logs?lines=50 HTTP/1.1" 200 OK
INFO: 192.168.0.119:59425 - "GET /api/performance-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:59432 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:59433 - "GET /api/system-alerts HTTP/1.1" 200 OK
INFO: 192.168.0.119:59547 - "GET /api/logs?lines=50 HTTP/1.1" 200 OK
INFO: 192.168.0.119:59554 - "GET /api/performance-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:59561 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:59563 - "GET /api/system-alerts HTTP/1.1" 200 OK
INFO: 192.168.0.119:59686 - "GET /api/logs?lines=50 HTTP/1.1" 200 OK
INFO: 192.168.0.119:59697 - "GET /api/performance-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:59702 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:59705 - "GET /api/system-alerts HTTP/1.1" 200 OK
브로드캐스트 오류: list.remove(x): x not in list
INFO: connection closed
INFO: ('192.168.0.119', 59726) - "WebSocket /ws" [accepted]
INFO: connection open
INFO: 192.168.0.119:59836 - "GET /api/logs?lines=50 HTTP/1.1" 200 OK
INFO: 192.168.0.119:59840 - "GET /api/performance-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:59850 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:59851 - "GET /api/system-alerts HTTP/1.1" 200 OK
브로드캐스트 오류: list.remove(x): x not in list
INFO: connection closed
INFO: ('192.168.0.119', 59899) - "WebSocket /ws" [accepted]
INFO: connection open
INFO: 192.168.0.119:59994 - "GET /api/logs?lines=50 HTTP/1.1" 200 OK
INFO: 192.168.0.119:59996 - "GET /api/performance-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:59998 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:59999 - "GET /api/system-alerts HTTP/1.1" 200 OK
INFO: 192.168.0.119:60154 - "GET /api/logs?lines=50 HTTP/1.1" 200 OK
INFO: 192.168.0.119:60159 - "GET /api/performance-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:60165 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:60166 - "GET /api/system-alerts HTTP/1.1" 200 OK
브로드캐스트 오류: list.remove(x): x not in list
INFO: connection closed
INFO: ('192.168.0.119', 60185) - "WebSocket /ws" [accepted]
INFO: connection open
INFO: 192.168.0.119:60299 - "GET /api/logs?lines=50 HTTP/1.1" 200 OK
INFO: 192.168.0.119:60312 - "GET /api/performance-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:60314 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:60315 - "GET /api/system-alerts HTTP/1.1" 200 OK
브로드캐스트 오류: list.remove(x): x not in list
INFO: connection closed
INFO: ('192.168.0.119', 60341) - "WebSocket /ws" [accepted]
INFO: connection open
INFO: 192.168.0.119:60441 - "GET /api/logs?lines=50 HTTP/1.1" 200 OK
INFO: 192.168.0.119:60447 - "GET /api/performance-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:60448 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:60443 - "GET /api/system-alerts HTTP/1.1" 200 OK
브로드캐스트 오류: list.remove(x): x not in list
INFO: connection closed
INFO: ('192.168.0.119', 60460) - "WebSocket /ws" [accepted]
INFO: connection open
INFO: 192.168.0.119:60580 - "GET /api/logs?lines=50 HTTP/1.1" 200 OK
INFO: 192.168.0.119:60581 - "GET /api/performance-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:60567 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:60582 - "GET /api/system-alerts HTTP/1.1" 200 OK
INFO: 192.168.0.119:60731 - "GET /api/logs?lines=50 HTTP/1.1" 200 OK
INFO: 192.168.0.119:60744 - "GET /api/performance-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:60746 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:60747 - "GET /api/system-alerts HTTP/1.1" 200 OK
브로드캐스트 오류: list.remove(x): x not in list
INFO: connection closed
INFO: ('192.168.0.119', 60758) - "WebSocket /ws" [accepted]
INFO: connection open
INFO: 192.168.0.119:60899 - "GET /api/logs?lines=50 HTTP/1.1" 200 OK
INFO: 192.168.0.119:60901 - "GET /api/performance-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:60906 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:60905 - "GET /api/system-alerts HTTP/1.1" 200 OK
브로드캐스트 오류: list.remove(x): x not in list
INFO: connection closed
INFO: ('192.168.0.119', 60919) - "WebSocket /ws" [accepted]
INFO: connection open
INFO: 192.168.0.119:60998 - "GET /api/logs?lines=50 HTTP/1.1" 200 OK
INFO: 192.168.0.119:61003 - "GET /api/performance-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:61015 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:61020 - "GET /api/system-alerts HTTP/1.1" 200 OK
브로드캐스트 오류: list.remove(x): x not in list
INFO: connection closed
INFO: ('192.168.0.119', 61048) - "WebSocket /ws" [accepted]
INFO: connection open
INFO: 192.168.0.119:61170 - "GET /api/logs?lines=50 HTTP/1.1" 200 OK
INFO: 192.168.0.119:61185 - "GET /api/performance-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:61176 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:61188 - "GET /api/system-alerts HTTP/1.1" 200 OK
INFO: 192.168.0.119:61282 - "GET /api/logs?lines=50 HTTP/1.1" 200 OK
INFO: 192.168.0.119:61287 - "GET /api/performance-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:61294 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:61298 - "GET /api/system-alerts HTTP/1.1" 200 OK
브로드캐스트 오류: list.remove(x): x not in list
INFO: connection closed
INFO: ('192.168.0.119', 61318) - "WebSocket /ws" [accepted]
INFO: connection open
INFO: 192.168.0.119:61398 - "GET /api/logs?lines=50 HTTP/1.1" 200 OK
INFO: 192.168.0.119:61412 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:61416 - "GET /api/performance-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:61417 - "GET /api/system-alerts HTTP/1.1" 200 OK
브로드캐스트 오류: list.remove(x): x not in list
INFO: connection closed
INFO: ('192.168.0.119', 61433) - "WebSocket /ws" [accepted]
INFO: connection open
INFO: 192.168.0.119:61544 - "GET /api/logs?lines=50 HTTP/1.1" 200 OK
INFO: 192.168.0.119:61551 - "GET /api/performance-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:61554 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:61555 - "GET /api/system-alerts HTTP/1.1" 200 OK
브로드캐스트 오류: list.remove(x): x not in list
INFO: connection closed
INFO: ('192.168.0.119', 61572) - "WebSocket /ws" [accepted]
INFO: connection open
INFO: 192.168.0.119:61651 - "GET /api/logs?lines=50 HTTP/1.1" 200 OK
INFO: 192.168.0.119:61653 - "GET /api/performance-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:61657 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:61663 - "GET /api/system-alerts HTTP/1.1" 200 OK
INFO: 192.168.0.119:61768 - "GET /api/logs?lines=50 HTTP/1.1" 200 OK
INFO: 192.168.0.119:61783 - "GET /api/performance-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:61789 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:61790 - "GET /api/system-alerts HTTP/1.1" 200 OK
브로드캐스트 오류: list.remove(x): x not in list
INFO: connection closed
INFO: ('192.168.0.119', 61805) - "WebSocket /ws" [accepted]
INFO: connection open
INFO: 192.168.0.119:61916 - "GET /api/logs?lines=50 HTTP/1.1" 200 OK
INFO: 192.168.0.119:61922 - "GET /api/performance-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:61923 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:61926 - "GET /api/system-alerts HTTP/1.1" 200 OK
브로드캐스트 오류: list.remove(x): x not in list
INFO: connection closed
INFO: ('192.168.0.119', 61949) - "WebSocket /ws" [accepted]
INFO: connection open
INFO: 192.168.0.119:62081 - "GET /api/logs?lines=50 HTTP/1.1" 200 OK
INFO: 192.168.0.119:62085 - "GET /api/performance-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:62096 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:62097 - "GET /api/system-alerts HTTP/1.1" 200 OK
브로드캐스트 오류: list.remove(x): x not in list
INFO: connection closed
INFO: ('192.168.0.119', 62132) - "WebSocket /ws" [accepted]
INFO: connection open
INFO: 192.168.0.119:62182 - "GET /api/logs?lines=50 HTTP/1.1" 200 OK
INFO: 192.168.0.119:62191 - "GET /api/performance-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:62197 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:62198 - "GET /api/system-alerts HTTP/1.1" 200 OK
INFO: 192.168.0.119:62313 - "GET /api/logs?lines=50 HTTP/1.1" 200 OK
INFO: 192.168.0.119:62321 - "GET /api/performance-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:62327 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:62328 - "GET /api/system-alerts HTTP/1.1" 200 OK
브로드캐스트 오류: list.remove(x): x not in list
INFO: connection closed
INFO: ('192.168.0.119', 62363) - "WebSocket /ws" [accepted]
INFO: connection open
INFO: 192.168.0.119:62520 - "GET /api/logs?lines=50 HTTP/1.1" 200 OK
INFO: 192.168.0.119:62530 - "GET /api/performance-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:62533 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:62534 - "GET /api/system-alerts HTTP/1.1" 200 OK
브로드캐스트 오류: list.remove(x): x not in list
INFO: connection closed
INFO: ('192.168.0.119', 62565) - "WebSocket /ws" [accepted]
INFO: connection open
INFO: 192.168.0.119:62682 - "GET /api/logs?lines=50 HTTP/1.1" 200 OK
INFO: 192.168.0.119:62684 - "GET /api/performance-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:62695 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:62697 - "GET /api/system-alerts HTTP/1.1" 200 OK
브로드캐스트 오류: list.remove(x): x not in list
INFO: connection closed
INFO: ('192.168.0.119', 62737) - "WebSocket /ws" [accepted]
INFO: connection open
INFO: 192.168.0.119:62862 - "GET /api/logs?lines=50 HTTP/1.1" 200 OK
INFO: 192.168.0.119:62870 - "GET /api/performance-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:62874 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:62873 - "GET /api/system-alerts HTTP/1.1" 200 OK
INFO: 192.168.0.119:62873 - "GET /api/logs?lines=50 HTTP/1.1" 200 OK
INFO: 192.168.0.119:62874 - "GET /api/performance-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:62870 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:62862 - "GET /api/system-alerts HTTP/1.1" 200 OK
INFO: 192.168.0.119:62870 - "GET /api/logs?lines=50 HTTP/1.1" 200 OK
INFO: 192.168.0.119:62874 - "GET /api/performance-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:62873 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:62862 - "GET /api/system-alerts HTTP/1.1" 200 OK
INFO: 192.168.0.119:62873 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:62874 - "GET /api/system-alerts HTTP/1.1" 200 OK
INFO: ('192.168.0.119', 62961) - "WebSocket /ws" [accepted]
INFO: 192.168.0.119:62873 - "GET /api/system-alerts HTTP/1.1" 200 OK
INFO: connection closed
INFO: connection open
INFO: 192.168.0.119:62874 - "GET /api/logs?lines=50 HTTP/1.1" 200 OK
INFO: 192.168.0.119:62959 - "GET /api/performance-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:62873 - "GET /api/system-alerts HTTP/1.1" 200 OK
INFO: 192.168.0.119:62959 - "GET /api/system-alerts HTTP/1.1" 200 OK
INFO: 192.168.0.119:63029 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:63045 - "GET /api/system-alerts HTTP/1.1" 200 OK
INFO: 192.168.0.119:62959 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:62959 - "GET /api/system-alerts HTTP/1.1" 200 OK
INFO: 192.168.0.119:63045 - "GET /api/logs?lines=50 HTTP/1.1" 200 OK
INFO: 192.168.0.119:63029 - "GET /api/performance-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:63047 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
INFO: connection closed
INFO: ('192.168.0.119', 63184) - "WebSocket /ws" [accepted]
INFO: connection open
INFO: 192.168.0.119:63249 - "GET /api/logs?lines=50 HTTP/1.1" 200 OK
INFO: 192.168.0.119:63261 - "GET /api/performance-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:63263 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:63264 - "GET /api/system-alerts HTTP/1.1" 200 OK
모델 성능 통계 조회 중 예외 발생: HTTPConnectionPool(host='0.0.0.0', port=8008): Read timed out. (read timeout=2)
INFO: 192.168.0.119:63451 - "GET /api/logs?lines=50 HTTP/1.1" 200 OK
INFO: 192.168.0.119:63457 - "GET /api/performance-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:63462 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:63468 - "GET /api/system-alerts HTTP/1.1" 200 OK
INFO: 192.168.0.119:63665 - "GET /api/logs?lines=50 HTTP/1.1" 200 OK
INFO: 192.168.0.119:63674 - "GET /api/performance-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:63681 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:63683 - "GET /api/system-alerts HTTP/1.1" 200 OK
브로드캐스트 오류: list.remove(x): x not in list
INFO: connection closed
INFO: ('192.168.0.119', 63710) - "WebSocket /ws" [accepted]
INFO: connection open
INFO: 192.168.0.119:63832 - "GET /api/logs?lines=50 HTTP/1.1" 200 OK
INFO: 192.168.0.119:63838 - "GET /api/performance-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:63843 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:63845 - "GET /api/system-alerts HTTP/1.1" 200 OK
브로드캐스트 오류: list.remove(x): x not in list
INFO: connection closed
INFO: ('192.168.0.119', 63889) - "WebSocket /ws" [accepted]
INFO: connection open
INFO: 192.168.0.119:63991 - "GET /api/logs?lines=50 HTTP/1.1" 200 OK
INFO: 192.168.0.119:63998 - "GET /api/performance-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:64006 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:64007 - "GET /api/system-alerts HTTP/1.1" 200 OK
INFO: 192.168.0.119:64138 - "GET /api/logs?lines=50 HTTP/1.1" 200 OK
INFO: 192.168.0.119:64142 - "GET /api/performance-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:64149 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:64150 - "GET /api/system-alerts HTTP/1.1" 200 OK
브로드캐스트 오류: list.remove(x): x not in list
INFO: connection closed
INFO: ('192.168.0.119', 64164) - "WebSocket /ws" [accepted]
INFO: connection open
INFO: 192.168.0.119:64278 - "GET /api/logs?lines=50 HTTP/1.1" 200 OK
INFO: 192.168.0.119:64287 - "GET /api/performance-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:64289 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:64290 - "GET /api/system-alerts HTTP/1.1" 200 OK
브로드캐스트 오류: list.remove(x): x not in list
INFO: connection closed
INFO: ('192.168.0.119', 64316) - "WebSocket /ws" [accepted]
INFO: connection open
INFO: 192.168.0.119:64504 - "GET /api/logs?lines=50 HTTP/1.1" 200 OK
INFO: 192.168.0.119:64505 - "GET /api/performance-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:64510 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:64511 - "GET /api/system-alerts HTTP/1.1" 200 OK
브로드캐스트 오류: list.remove(x): x not in list
INFO: connection closed
INFO: ('192.168.0.119', 64519) - "WebSocket /ws" [accepted]
INFO: connection open
INFO: 192.168.0.119:64589 - "GET /api/logs?lines=50 HTTP/1.1" 200 OK
INFO: 192.168.0.119:64600 - "GET /api/performance-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:64604 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:64606 - "GET /api/system-alerts HTTP/1.1" 200 OK
INFO: 192.168.0.119:64659 - "GET /api/logs?lines=50 HTTP/1.1" 200 OK
INFO: 192.168.0.119:64669 - "GET /api/performance-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:64676 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:64677 - "GET /api/system-alerts HTTP/1.1" 200 OK
브로드캐스트 오류: list.remove(x): x not in list
INFO: connection closed
INFO: ('192.168.0.119', 64691) - "WebSocket /ws" [accepted]
INFO: connection open
INFO: 192.168.0.119:64715 - "GET /api/logs?lines=50 HTTP/1.1" 200 OK
INFO: 192.168.0.119:64719 - "GET /api/performance-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:64726 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:64731 - "GET /api/system-alerts HTTP/1.1" 200 OK
브로드캐스트 오류: list.remove(x): x not in list
INFO: connection closed
INFO: ('192.168.0.119', 64756) - "WebSocket /ws" [accepted]
INFO: connection open
INFO: 192.168.0.119:64864 - "GET /api/logs?lines=50 HTTP/1.1" 200 OK
INFO: 192.168.0.119:64877 - "GET /api/performance-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:64879 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:64880 - "GET /api/system-alerts HTTP/1.1" 200 OK
브로드캐스트 오류: list.remove(x): x not in list
INFO: connection closed
INFO: ('192.168.0.119', 64913) - "WebSocket /ws" [accepted]
INFO: connection open
INFO: 192.168.0.119:65047 - "GET /api/logs?lines=50 HTTP/1.1" 200 OK
INFO: 192.168.0.119:65049 - "GET /api/performance-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:65057 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:65059 - "GET /api/system-alerts HTTP/1.1" 200 OK
INFO: 192.168.0.119:65179 - "GET /api/logs?lines=50 HTTP/1.1" 200 OK
INFO: 192.168.0.119:65183 - "GET /api/performance-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:65184 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:65185 - "GET /api/system-alerts HTTP/1.1" 200 OK
INFO: 192.168.0.119:65179 - "GET /api/logs?lines=50 HTTP/1.1" 200 OK
INFO: 192.168.0.119:65183 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
브로드캐스트 오류: list.remove(x): x not in list
INFO: connection closed
INFO: ('192.168.0.119', 65209) - "WebSocket /ws" [accepted]
INFO: 192.168.0.119:65184 - "GET /api/system-alerts HTTP/1.1" 200 OK
INFO: connection open
INFO: 192.168.0.119:65183 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:65243 - "GET /api/performance-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:65179 - "GET /api/system-alerts HTTP/1.1" 200 OK
INFO: 192.168.0.119:65243 - "GET /api/logs?lines=50 HTTP/1.1" 200 OK
INFO: 192.168.0.119:65183 - "GET /api/performance-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:65184 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:65179 - "GET /api/system-alerts HTTP/1.1" 200 OK
INFO: 192.168.0.119:65184 - "GET /api/system-alerts HTTP/1.1" 200 OK
INFO: 192.168.0.119:65179 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
INFO: ('192.168.0.119', 65278) - "WebSocket /ws" [accepted]
INFO: 192.168.0.119:65179 - "GET /api/logs?lines=50 HTTP/1.1" 200 OK
INFO: 192.168.0.119:65184 - "GET /api/performance-stats HTTP/1.1" 200 OK
INFO: connection open
INFO: 192.168.0.119:65283 - "GET /api/system-alerts HTTP/1.1" 200 OK
INFO: 192.168.0.119:65340 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:65341 - "GET /api/system-alerts HTTP/1.1" 200 OK
INFO: 192.168.0.119:65341 - "GET /api/system-alerts HTTP/1.1" 200 OK
INFO: 192.168.0.119:65340 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:65385 - "GET /api/system-alerts HTTP/1.1" 200 OK
INFO: 192.168.0.119:65399 - "GET /api/performance-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:65406 - "GET /api/logs?lines=50 HTTP/1.1" 200 OK
INFO: 192.168.0.119:49190 - "GET /api/model-usage-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:49194 - "GET /api/system-alerts HTTP/1.1" 200 OK
INFO: 192.168.0.119:49203 - "GET /api/performance-stats HTTP/1.1" 200 OK
INFO: 192.168.0.119:49204 - "GET /api/logs?lines=50 HTTP/1.1" 200 OK
INFO: ('192.168.0.119', 49159) - "WebSocket /ws" [accepted]
INFO: connection closed
INFO: connection closed
INFO: connection open
INFO: ('192.168.0.119', 49234) - "WebSocket /ws" [accepted]

View File

@ -1 +1 @@
78184 81928

View File

@ -6,70 +6,70 @@
"workers_by_status": { "workers_by_status": {
"idle": [ "idle": [
{ {
"id": "worker_1daac568", "id": "worker_1cb20176",
"status": "idle", "status": "idle",
"task_count": 0, "task_count": 0,
"error_count": 0, "error_count": 0,
"last_task_at": null "last_task_at": null
}, },
{ {
"id": "worker_c66b7d6b", "id": "worker_275875fe",
"status": "idle", "status": "idle",
"task_count": 0, "task_count": 0,
"error_count": 0, "error_count": 0,
"last_task_at": null "last_task_at": null
}, },
{ {
"id": "worker_cefffbad", "id": "worker_22db34f9",
"status": "idle", "status": "idle",
"task_count": 0, "task_count": 0,
"error_count": 0, "error_count": 0,
"last_task_at": null "last_task_at": null
}, },
{ {
"id": "worker_009a14df", "id": "worker_bc8befaf",
"status": "idle", "status": "idle",
"task_count": 0, "task_count": 0,
"error_count": 0, "error_count": 0,
"last_task_at": null "last_task_at": null
}, },
{ {
"id": "worker_335c1fa5", "id": "worker_d801fb26",
"status": "idle", "status": "idle",
"task_count": 0, "task_count": 0,
"error_count": 0, "error_count": 0,
"last_task_at": null "last_task_at": null
}, },
{ {
"id": "worker_2767d405", "id": "worker_6afb49c9",
"status": "idle", "status": "idle",
"task_count": 0, "task_count": 0,
"error_count": 0, "error_count": 0,
"last_task_at": null "last_task_at": null
}, },
{ {
"id": "worker_8ec98a8f", "id": "worker_0b612d23",
"status": "idle", "status": "idle",
"task_count": 0, "task_count": 0,
"error_count": 0, "error_count": 0,
"last_task_at": null "last_task_at": null
}, },
{ {
"id": "worker_1c42e06e", "id": "worker_02e18c3d",
"status": "idle", "status": "idle",
"task_count": 0, "task_count": 0,
"error_count": 0, "error_count": 0,
"last_task_at": null "last_task_at": null
}, },
{ {
"id": "worker_3124fda8", "id": "worker_0e6ebed3",
"status": "idle", "status": "idle",
"task_count": 0, "task_count": 0,
"error_count": 0, "error_count": 0,
"last_task_at": null "last_task_at": null
}, },
{ {
"id": "worker_074f5bdb", "id": "worker_bee8c543",
"status": "idle", "status": "idle",
"task_count": 0, "task_count": 0,
"error_count": 0, "error_count": 0,
@ -106,38 +106,38 @@
} }
}, },
"api_stats": { "api_stats": {
"total_requests": 26, "total_requests": 533,
"successful_requests": 26, "successful_requests": 533,
"failed_requests": 0, "failed_requests": 0,
"success_rate": 100.0, "success_rate": 100.0,
"endpoint_usage": { "endpoint_usage": {
"GET /api/v1/health": 2, "GET /api/v1/health": 2,
"POST /api/v1/inpaint": 24 "GET /api/v1/stats": 531
}, },
"endpoint_stats": { "endpoint_stats": {
"GET /api/v1/health": { "GET /api/v1/health": {
"count": 2, "count": 2,
"avg_time": 0.0014368295669555664, "avg_time": 0.0027375221252441406,
"min_time": 0.0011837482452392578, "min_time": 0.0012462139129638672,
"max_time": 0.001689910888671875, "max_time": 0.004228830337524414,
"current_concurrent": 0 "current_concurrent": 0
}, },
"POST /api/v1/inpaint": { "GET /api/v1/stats": {
"count": 24, "count": 531,
"avg_time": 8.082906911770502, "avg_time": 0.0032375192642211913,
"min_time": 2.5534043312072754, "min_time": 0.0019419193267822266,
"max_time": 25.198312282562256, "max_time": 0.007139682769775391,
"current_concurrent": 0 "current_concurrent": 0
} }
}, },
"average_response_time": 7.461255366985615, "average_response_time": 0.0032355780896728974,
"min_response_time": 0.0011837482452392578, "min_response_time": 0.001142740249633789,
"max_response_time": 25.198312282562256, "max_response_time": 0.011610746383666992,
"current_concurrent": 0, "current_concurrent": 0,
"max_concurrent": 8, "max_concurrent": 1,
"requests_per_second": 0.13373595939047092, "requests_per_second": 0.02162773814159873,
"uptime": 194.41293215751648, "uptime": 24644.278403520584,
"recent_errors": [] "recent_errors": []
}, },
"timestamp": 1756486704.2948773 "timestamp": 1756512049.7289712
} }