Files
MatchLiveTv/infra/scripts/stream_capacity_phase.sh
eminuxandCursor 7c7b2bf14c Alza soft capacity fase A e aggiunge quiet hours CPX notturne.
Home a 4 e cloud a 6 con MAX_NODES=12 (~76 soft); di notte (02–07 Europe/Rome) niente scale-out/warm-spare e sweeper che chiude i CPX idle.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-05 09:48:50 +02:00

61 lines
1.9 KiB
Bash
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/env bash
# Applica soft-limit capacity phases su infra/.env (qualità-first).
# Uso (sul server, in /opt/matchlivetv/infra):
# bash ../scripts/deploy/../infra/scripts/stream_capacity_phase.sh A|B|C
# Fase B/C solo DOPO misure QoS/costi — non saltare.
set -euo pipefail
PHASE="${1:-}"
INFRA="$(cd "$(dirname "$0")/.." && pwd)"
ENV_FILE="${INFRA}/.env"
if [[ ! -f "$ENV_FILE" ]]; then
echo "Manca $ENV_FILE" >&2
exit 1
fi
case "$PHASE" in
A)
HOME_MAX=4; CLOUD_MAX=6; MAX_NODES=12; BUDGET=150; SOFT_FREE=2; WARM=1; RELAY=6
;;
B)
HOME_MAX=4; CLOUD_MAX=6; MAX_NODES=22; BUDGET=250; SOFT_FREE=3; WARM=2; RELAY=6
;;
C)
HOME_MAX=4; CLOUD_MAX=6; MAX_NODES=33; BUDGET=360; SOFT_FREE=4; WARM=2; RELAY=6
;;
*)
echo "Uso: $0 A|B|C" >&2
echo " A → soft ~76 (home4 + 12×6)" >&2
echo " B → soft ~136 (dopo misure)" >&2
echo " C → soft ~202 (tetto ≥200)" >&2
exit 1
;;
esac
cp -a "$ENV_FILE" "${ENV_FILE}.bak.phase${PHASE}-$(date +%Y%m%d%H%M%S)"
set_kv() {
local key="$1" val="$2"
if grep -qE "^${key}=" "$ENV_FILE"; then
sed -i "s|^${key}=.*|${key}=${val}|" "$ENV_FILE"
else
printf '%s=%s\n' "$key" "$val" >> "$ENV_FILE"
fi
}
set_kv STREAM_NODE_HOME_MAX_PUBLISHERS "$HOME_MAX"
set_kv STREAM_CLOUD_MAX_PUBLISHERS "$CLOUD_MAX"
set_kv STREAM_AUTOSCALE_MAX_NODES "$MAX_NODES"
set_kv STREAM_AUTOSCALE_MONTHLY_BUDGET_EUR "$BUDGET"
set_kv STREAM_AUTOSCALE_SOFT_FREE_SLOTS "$SOFT_FREE"
set_kv STREAM_AUTOSCALE_WARM_SPARE "$WARM"
set_kv RELAY_MAX_CONCURRENT "$RELAY"
set_kv STREAM_AUTOSCALE_QUIET_HOURS "02:00-07:00"
set_kv STREAM_AUTOSCALE_QUIET_TZ "Europe/Rome"
set_kv STREAM_NIGHT_SWEEP_ENABLED "1"
echo "Fase $PHASE applicata su $ENV_FILE"
echo " home=$HOME_MAX cloud=$CLOUD_MAX max_nodes=$MAX_NODES budget=$BUDGET soft≈$((HOME_MAX + MAX_NODES * CLOUD_MAX))"
echo "Riavvia rails+sidekiq e: rails runner 'Streams::NodeRegistry.ensure_home_from_env!'"