From 64d5063041029eeedcce9be09499dd78dc0dd879 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=AF=BC=ED=97=8C?= Date: Fri, 10 Jul 2026 09:09:55 +0900 Subject: [PATCH] =?UTF-8?q?feat(lps):=20=EC=84=9C=EB=B2=84=20=EC=8B=A4?= =?UTF-8?q?=ED=96=89=20=EC=8A=A4=ED=81=AC=EB=A6=BD=ED=8A=B8=EC=97=90=20?= =?UTF-8?q?=EB=A9=80=ED=8B=B0=EC=BD=94=EC=96=B4=20=EB=8C=80=ED=99=94?= =?UTF-8?q?=ED=98=95=20=EC=84=A0=ED=83=9D=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 일반 실행(1) 선택 시 PROCESS_COUNT 를 물어보고(기본 1, CPU 코어 수 표기), 2 이상이면 DB_CONNECTION_BUDGET 도 물어본다(기본 96 — 전용 PG 벤치값). 워커 스크립트(run_local_worker.sh)의 동시성 질문과 같은 대화형 패턴. Co-Authored-By: Claude Fable 5 --- lps/run_local_server.sh | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/lps/run_local_server.sh b/lps/run_local_server.sh index 64f307c..f851156 100755 --- a/lps/run_local_server.sh +++ b/lps/run_local_server.sh @@ -49,7 +49,17 @@ export APP_ENV=local # 5) 실행 case "$choice" in - 1) echo "[run] web_main.py → http://localhost:$PORT/docs" + 1) # 멀티코어: API 는 asyncio(단일 스레드)라 프로세스 수 = 사용 코어 수. 커넥션 풀은 예산에서 자동 역산. + cpu_count="$(sysctl -n hw.ncpu 2>/dev/null || echo '?')" + read -rp "프로세스 수 PROCESS_COUNT [${PROCESS_COUNT:-1}] (CPU ${cpu_count}코어, 부하테스트 벤치는 4): " pc + pc="${pc:-${PROCESS_COUNT:-1}}" + export PROCESS_COUNT="$pc" + if [[ "$pc" != "1" ]]; then + read -rp "DB 커넥션 예산 DB_CONNECTION_BUDGET [${DB_CONNECTION_BUDGET:-96}] (전용PG≈90+, 공유PG 40): " budget + export DB_CONNECTION_BUDGET="${budget:-${DB_CONNECTION_BUDGET:-96}}" + fi + echo "[run] web_main.py → http://localhost:$PORT/docs (프로세스 ${pc}개)" + echo " 기동 로그의 'DB Pool : ... × ${pc}workers ... (budget=...)' 으로 실효 풀 확인" exec "$PY" web_main.py ;; 2) echo "[run] uvicorn --reload → http://localhost:$PORT/docs" exec "$VENV/bin/uvicorn" router.router:app --host 0.0.0.0 --port "$PORT" --reload ;;