29 lines
741 B
Bash
29 lines
741 B
Bash
#!/bin/bash
|
|
# Startup script for API with auto-scaling workers
|
|
|
|
# Detect number of CPU cores
|
|
CPU_CORES=$(nproc)
|
|
|
|
# Calculate optimal workers: (2 x CPU cores) + 1
|
|
# But cap at 8 workers to avoid over-saturation
|
|
WORKERS=$((2 * CPU_CORES + 1))
|
|
if [ $WORKERS -gt 8 ]; then
|
|
WORKERS=8
|
|
fi
|
|
|
|
# Use environment variable if set, otherwise use calculated value
|
|
WORKERS=${API_WORKERS:-$WORKERS}
|
|
|
|
echo "Starting API with $WORKERS workers (detected $CPU_CORES CPU cores)"
|
|
|
|
exec gunicorn api.main:app \
|
|
--workers $WORKERS \
|
|
--worker-class uvicorn.workers.UvicornWorker \
|
|
--bind 0.0.0.0:8000 \
|
|
--timeout 120 \
|
|
--max-requests 1000 \
|
|
--max-requests-jitter 100 \
|
|
--access-logfile - \
|
|
--error-logfile - \
|
|
--log-level info
|