#!/bin/bash # 切到 B 组(quic6 + h2 4)并起 75 分钟测量。 # # 为什么 75 分钟而不是 45: # A 组的 45 分钟新鲜数据里**一次塌陷都没抓到**(塌陷率约 2.2%, # 45 分钟窗口的命中概率只有约 60%)。拉长到 75 分钟把概率提到 ~80%。 # # 注意:这次改配置会重启两个隧道实例(约 26 秒不可用), # 用户可能在用手表,所以**一次改到位**,跑完立刻恢复成 A。 set -u MAIN=/etc/systemd/system/lanremote-tunnel.service H2=/etc/systemd/system/lanremote-tunnel-h2.service BAK=/root/ratio2.bak.$(date +%s) cp -a "$MAIN" "$BAK.main" cp -a "$H2" "$BAK.h2" echo "════════ 1. 等 A 组跑完 ════════" for i in $(seq 1 40); do if ! pgrep -f 'rpab.sh A' > /dev/null 2>&1; then echo " A 组已结束" break fi sleep 10 done pgrep -af 'rpab.sh' | sed 's/^/ 还在跑: /' || echo " 没有测试在跑" echo echo "════════ 2. 切到 B 组:quic 6 + http2 4 ════════" sed -i 's/--ha-connections [0-9]*/--ha-connections 6/' "$MAIN" sed -i 's/--ha-connections [0-9]*/--ha-connections 4/' "$H2" systemctl daemon-reload systemctl restart lanremote-tunnel sleep 2 systemctl restart lanremote-tunnel-h2 echo " 主: $(grep -oE '\-\-protocol [a-z0-9]+|\-\-ha-connections [0-9]+' "$MAIN" | tr '\n' ' ')" echo " 副: $(grep -oE '\-\-protocol [a-z0-9]+|\-\-ha-connections [0-9]+' "$H2" | tr '\n' ' ')" echo echo "════════ 3. 等连接建齐 ════════" for i in $(seq 1 40); do sleep 4 q=$(curl -s --max-time 5 http://127.0.0.1:20241/metrics 2>/dev/null | grep '^cloudflared_tunnel_ha_connections' | awk '{print $2}') h=$(curl -s --max-time 5 http://127.0.0.1:20242/metrics 2>/dev/null | grep '^cloudflared_tunnel_ha_connections' | awk '{print $2}') q=${q:-0}; h=${h:-0} [ $((q + h)) -ge 8 ] && break done echo " quic=$q http2=$h 合计=$((q + h))(等了约 $((i * 4)) 秒)" echo echo "════════ 4. 公网确认 ════════" for i in $(seq 1 15); do c=$(curl -s -o /dev/null -w '%{http_code}' --max-time 15 -H 'User-Agent: LanRemote/1.8.2' https://relay.xxmxxs.top/v1/health) echo " 第 $i 次: $c" [ "$c" = "200" ] && break sleep 3 done echo echo "════════ 5. 起 B 组 75 分钟 ════════" if pgrep -f 'rpab.sh B' > /dev/null 2>&1; then echo " 已经在跑,跳过" else cd /root && setsid bash /root/rpab.sh B 75 < /dev/null > /root/ab_B.out 2>&1 & disown 2>/dev/null || true sleep 5 fi echo " 进程: $(pgrep -af 'rpab.sh B' | head -1)" echo " 已写入:$(wc -l < /root/ab_B_health.tsv 2>/dev/null || echo 0) 条" echo echo " 备份: $BAK.main $BAK.h2" echo " 跑完后用 /root/rp_restore_A.sh 恢复成 quic8+h2 2"