清理误提交的测试数据目录 + 扩展 .gitignore

This commit is contained in:
xmz7891
2026-10-07 19:01:33 +08:00
parent e61bae80ca
commit 0ee91b68de
10 changed files with 636 additions and 41 deletions
+42 -14
View File
@@ -71,6 +71,8 @@ THRESHOLD=3
# 重启本地隧道解决不了,只会自伤。给足时间让它自己恢复。
# 连接真的掉下去了(降级),才用 THRESHOLD=3 快速重启。
THRESHOLD_HEALTHY=8
# 连接"中等"(4~5 条)时的阈值:比很差时耐心一点,比健康时严一点。
THRESHOLD_MID=5
STALE_MINUTES=10 # 日志多久没动静算卡死
# 两次重启至少隔这么久。
# 150 秒不是拍脑袋:隧道在差的 4G 上重建 5 条连接要 30~60 秒,
@@ -105,15 +107,26 @@ write_state() {
# 读某个 metrics 端口的连接数。
# 端口不通(实例死了)→ 输出 "X"(区分于 "0":0 是活着但没连接)
#
# ⚠ 必须重试。之前只用一次 `curl --max-time 4` 判定,
# 设备忙的时候(CPU 被别的进程占住、SSD/IO 抖动)curl 会超时,
# 于是被误判成"实例无响应"进而重启隧道 —— 一次误判就是 26 秒中断。
# 历史重启原因里 8 次有 6 次写的是"实例无响应",其中一部分很可能是
# 这种假阳性(真死的只有那次服务被我 stop 掉的)。
# 给 3 次机会、每次间隔 1 秒,把瞬时超时排除掉。
conns_of() {
local port="$1" out
out=$(timeout 5 curl -s --max-time 4 "http://127.0.0.1:$port/metrics" 2>/dev/null \
| grep '^cloudflared_tunnel_ha_connections' | awk '{print $2}')
if [ -z "$out" ]; then
echo "X"
else
echo "$out"
fi
local port="$1" out attempt
for attempt in 1 2 3; do
out=$(timeout 6 curl -s --max-time 5 \
"http://127.0.0.1:$port/metrics" 2>/dev/null \
| grep '^cloudflared_tunnel_ha_connections' | awk '{print $2}')
if [ -n "$out" ]; then
echo "$out"
return
fi
[ "$attempt" -lt 3 ] && sleep 1
done
echo "X"
}
# 重启指定的一组服务(带最小间隔保护)
@@ -295,15 +308,30 @@ if [ "$DEGRADED" = "1" ]; then
fi
if [ "$FAIL" -ge "$THRESHOLD" ] || [ "$ZERO" -ge "$THRESHOLD" ]; then
# 连接还健康的话,用更宽的阈值 —— 别把"抖一下"升级成 1 分钟中断
if [ "$TOTAL" -ge "$BUILT_MIN" ] 2>/dev/null && [ "$ZERO" -lt "$THRESHOLD" ]; then
if [ "$FAIL" -lt "$THRESHOLD_HEALTHY" ]; then
log "公网连续 $FAIL 次不通,但连接健康(合计 $TOTAL 条)—— 再等等,不重启"
write_state "$ZERO" "$FAIL" "$BUILT"
exit 0
# 按连接健康程度分三档,越健康越有耐心 ——
# 别把"抖一下"升级成 1 分钟中断。
#
# TOTAL >= 6 健康 -> 要连续 8 次(约 2.5 分钟)
# 4 <= TOTAL < 6 中等 -> 连续 5 次(约 1.7 分钟)
# TOTAL < 4 很差 -> 保持 3 次(约 1 分钟)
#
# 中间的 5 次那一档是补上的:原来只要 TOTAL < 6 就直接用 3 次,
# 于是 4 条连接(虽然不满但还能扛)也会在一分钟内被重启。
local_threshold=$THRESHOLD
if [ "$ZERO" -lt "$THRESHOLD" ]; then
if [ "$TOTAL" -ge "$BUILT_MIN" ] 2>/dev/null; then
local_threshold=$THRESHOLD_HEALTHY
elif [ "$TOTAL" -ge 4 ] 2>/dev/null; then
local_threshold=$THRESHOLD_MID
fi
fi
if [ "$FAIL" -lt "$local_threshold" ]; then
log "公网连续 $FAIL 次不通,连接 $TOTAL 条(阈值 $local_threshold)—— 再等等,不重启"
write_state "$ZERO" "$FAIL" "$BUILT"
exit 0
fi
# 有实例只是"低连接"(不是完全没响应)时,只重启那些实例;
# 全都低就重启全部。
if [ "${#LOW_SVCS[@]}" -gt 0 ] && [ "${#LOW_SVCS[@]}" -lt "${#ALL_SVCS[@]}" ]; then