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>
This commit is contained in:
@@ -32,6 +32,7 @@ CRON_BLOCK="${MARKER}
|
||||
0 8 * * * mkdir -p ${LOG_DIR} && ${RUNNER} recordings:expiry_warnings >> ${LOG_FILE} 2>&1
|
||||
15 * * * * mkdir -p ${LOG_DIR} && ${RUNNER} analytics:aggregate >> ${LOG_DIR}/cron-analytics.log 2>&1
|
||||
20 4 * * * mkdir -p ${LOG_DIR} && ${RUNNER} analytics:purge >> ${LOG_DIR}/cron-analytics.log 2>&1
|
||||
*/15 * * * * mkdir -p ${LOG_DIR} && ${RUNNER} streams:night_cloud_sweep >> ${LOG_DIR}/cron-night-sweep.log 2>&1
|
||||
*/10 * * * * mkdir -p ${LOG_DIR} && /bin/bash ${SCAN_LOGS} >> ${OPS_LOG_FILE} 2>&1
|
||||
"
|
||||
|
||||
|
||||
Executable
+60
@@ -0,0 +1,60 @@
|
||||
#!/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!'"
|
||||
Reference in New Issue
Block a user