Add deployment tuning and chat load test

This commit is contained in:
2026-07-08 17:45:18 +08:00
parent 6464c61396
commit efd03ff9df
8 changed files with 209 additions and 2 deletions

View File

@@ -2,6 +2,7 @@ from __future__ import annotations
import asyncio
import json
import logging
from collections.abc import AsyncIterator
from fastapi import APIRouter, Depends, HTTPException, Query
@@ -31,6 +32,7 @@ from app.services.chat_queue_service import load_chat_queue_config
from app.services.chat_stream_service import ChatStreamService
router = APIRouter()
logger = logging.getLogger(__name__)
@router.post("/session")
@@ -155,6 +157,7 @@ async def _chat_stream(payload: ChatCompletionRequest, db: Session, current_user
except asyncio.CancelledError:
raise
except Exception:
logger.exception("Chat stream failed")
yield _sse_event("error", message="AI 回复生成失败,请稍后再试。")
finally:
if acquired:

View File

@@ -26,6 +26,10 @@ class Settings(BaseSettings):
database_url: str = "mysql+pymysql://ai_kb:ai_kb@127.0.0.1:3306/ai_knowledge_base_v2?charset=utf8mb4"
redis_url: str = ""
db_pool_size: int = 10
db_max_overflow: int = 20
db_pool_timeout: int = 30
db_pool_recycle: int = 1800
auto_create_tables: bool = False
jwt_secret_key: str = "change-me-in-production"

View File

@@ -10,7 +10,15 @@ from app.models import Base
settings = get_settings()
engine = create_engine(settings.database_url, pool_pre_ping=True, future=True)
engine = create_engine(
settings.database_url,
pool_pre_ping=True,
pool_size=settings.db_pool_size,
max_overflow=settings.db_max_overflow,
pool_timeout=settings.db_pool_timeout,
pool_recycle=settings.db_pool_recycle,
future=True,
)
SessionLocal = sessionmaker(bind=engine, autoflush=False, autocommit=False, future=True)