#!/bin/bash # 10 分钟长测:确认修复后的可用率稳定。 # # 对比基线(修之前,同样是这台设备): # QUIC ha=1 48% # HTTP2 ha=1 35~65% # HTTP2 ha=2 60~75% # 长轮询 60 次只成功 18 次(30%),且"跑着跑着全挂" set -u RELAY_DIR=/root/lanremote-relay URL=https://relay.xxmxxs.top echo " 起点:连接数=$(curl -s --max-time 5 http://127.0.0.1:20241/metrics 2>/dev/null | grep '^cloudflared_tunnel_ha_connections' | awk '{print $2}')" # 清空日志重新计数 : > "$RELAY_DIR/tunnel.log" echo " 连续探 10 分钟(每 4 秒一次,共 150 次)…" ok=0; bad=0; consec=0; maxconsec=0 for i in $(seq 1 150); do c=$(timeout 12 curl -4 -s -o /dev/null -w '%{http_code}' \ -H 'User-Agent: LanRemote/1.4.0' "$URL/v1/health" 2>/dev/null) c=${c:-000} if [ "$c" = "200" ]; then ok=$((ok + 1)) consec=0 else bad=$((bad + 1)) consec=$((consec + 1)) [ "$consec" -gt "$maxconsec" ] && maxconsec=$consec fi sleep 4 done pct=$((ok * 100 / 150)) echo echo "===== 结果 =====" echo " 可用 $ok/150 = ${pct}%" echo " 最长连续失败 ${maxconsec} 次(约 $((maxconsec * 4)) 秒)" echo echo " 隧道这 10 分钟:" echo " 注册 $(grep -c 'Registered tunnel connection' "$RELAY_DIR/tunnel.log" 2>/dev/null || echo 0) 次" echo " 断开 $(grep -c 'Connection terminated' "$RELAY_DIR/tunnel.log" 2>/dev/null || echo 0) 次" echo " Bad request syntax(那个污染 bug)$(grep -c 'Bad request syntax' "$RELAY_DIR/tunnel.log" 2>/dev/null || echo 0) 次" echo " Unsolicited response $(grep -c 'Unsolicited response' "$RELAY_DIR/tunnel.log" 2>/dev/null || echo 0) 次" echo echo " 看门狗动作:" tail -4 "$RELAY_DIR/watchdog.log" 2>/dev/null | sed 's/^/ /' echo echo "===== 对比修之前 =====" echo " 修之前 48% ~ 70%" echo " 修之后 ${pct}%" if [ "$pct" -ge 90 ]; then echo " ✓ 达到目标(≥90%)" else echo " ~ 还没到 90%" fi