refactor(runner): 升级为主控调度引擎,新增智能轮盘算法 (70% Google / 30% Trust) 与开关判定,彻底杜绝小鸡 OOM

This commit is contained in:
hotyue
2026-04-02 09:18:37 +00:00
parent 9681bc16b5
commit 7deee7a764

View File

@@ -1,8 +1,8 @@
#!/bin/bash
# ==========================================================
# 脚本名称: runner.sh (IP-Sentinel 主控调度引擎)
# 核心功能: 防并发随机延迟启动、加载本地固化配置、调度业务模块
# 脚本名称: runner.sh (IP-Sentinel 主控调度引擎 V2.0 智能分配版)
# 核心功能: 防并发延迟启动、功能开关(Feature Flag)自适应、多模块概率轮盘调度
# ==========================================================
INSTALL_DIR="/opt/ip_sentinel"
@@ -28,21 +28,46 @@ export -f log
export CONFIG_FILE INSTALL_DIR
# 3. 防僵尸网络特征 (Cron Jitter) - 核心隐蔽逻辑
# 【核心升级】配合每 30 分钟的调度周期,将随机休眠控制在 0 到 180 秒 (3分钟) 内,彻底打散全球并发请求
# 配合每 30 分钟的调度周期,将随机休眠控制在 0 到 180 秒 (3分钟) 内,彻底打散全球并发请求
JITTER_TIME=$((RANDOM % 180))
log "SYSTEM" "INFO" "主控引擎被 Cron 唤醒,进入防并发随机休眠状态: ${JITTER_TIME} 秒..."
sleep $JITTER_TIME
# 4. 唤醒并调度业务模块
log "SYSTEM" "INFO" "休眠结束,开始执行养护任务..."
# 4. 唤醒并读取功能开关,执行智能调度 (Feature Flag)
log "SYSTEM" "INFO" "休眠结束,开始计算本轮任务轮盘..."
# 调度 Google 模块
if [ -x "${INSTALL_DIR}/core/mod_google.sh" ]; then
log "SYSTEM" "INFO" "加载子模块: Google 业务模拟"
# 核心降耗逻辑:使用 nice -n 19 赋予进程最低 CPU 优先级,绝不抢占 VPS 正常业务的资源
nice -n 19 bash "${INSTALL_DIR}/core/mod_google.sh"
TARGET_MOD=""
MOD_NAME=""
# 智能轮盘赌算法
if [ "$ENABLE_GOOGLE" == "true" ] && [ "$ENABLE_TRUST" == "true" ]; then
# 双管齐下: 70% 概率跑 Google 稳固定位30% 概率跑 Trust 洗刷风控分
ROLL=$((RANDOM % 100 + 1))
if [ $ROLL -le 70 ]; then
TARGET_MOD="mod_google.sh"
MOD_NAME="Google 区域纠偏"
else
TARGET_MOD="mod_trust.sh"
MOD_NAME="IP 信用净化"
fi
elif [ "$ENABLE_GOOGLE" == "true" ]; then
TARGET_MOD="mod_google.sh"
MOD_NAME="Google 区域纠偏"
elif [ "$ENABLE_TRUST" == "true" ]; then
TARGET_MOD="mod_trust.sh"
MOD_NAME="IP 信用净化"
else
log "SYSTEM" "ERROR" "未找到可执行的 Google 模块"
log "SYSTEM" "WARN" "节点未开启任何养护模块,跳过本轮执行。"
exit 0
fi
# 5. 拉起选定的业务模块
if [ -n "$TARGET_MOD" ] && [ -x "${INSTALL_DIR}/core/${TARGET_MOD}" ]; then
log "SYSTEM" "INFO" "命中触发条件,加载并执行子模块: ${MOD_NAME}"
# 核心降耗逻辑:使用 nice -n 19 赋予进程最低 CPU 优先级,绝不抢占 VPS 正常业务的资源
nice -n 19 bash "${INSTALL_DIR}/core/${TARGET_MOD}"
else
log "SYSTEM" "ERROR" "配置了模块 ${MOD_NAME},但未找到对应的可执行脚本: ${TARGET_MOD}"
fi
log "SYSTEM" "INFO" "本轮所有模块调度完毕,哨兵继续隐蔽待命。"