Files
ykxmz/_build/rp_wd_rate.sh
T
xmz7891 aac43e559d 修正 MTU 测试的过时断言(1500 -> 1400)
test_net_tune.py 原来断言 net-tune.sh 里写着 mtu 1500,
依据是更早一次实测「接口 MTU 降到 1400 会掉到 50%」。

那个结论后来被推翻了 —— 当时漏了一件事:
**MSS 钳制只管 TCP,QUIC 走 UDP 完全不受保护。**
路径 MTU 实测 1472(1500 的包不通),QUIC 默认发 ~1452 的包会被
中间设备静默丢掉,而 UDP 丢了不回 ICMP,只能等超时。
把接口 MTU 压到 1400 之后,QUIC 建齐 10 条连接从 28 秒缩到 12 秒。

所以现在是**故意**设 1400。断言跟着改,
不然它会永久假失败,还会诱导后人把真正的改进改回 1500。

顺带记录:全量回归 38 个阶段全部通过。
新增的三个阶段(局域网优化 / 手表局域网切换 / 编码与换行 /
管理页设备控制)都是这轮加的。
2026-10-07 18:10:30 +08:00

52 lines
2.5 KiB
Bash

#!/bin/bash
# 看 watchdog 到底按什么节奏在重启,以及是不是过度重启
set -u
echo "════════ 1. watchdog 最近 30 行 ════════"
tail -30 /root/lanremote-relay/watchdog.log 2>/dev/null | sed 's/^/ /'
echo
echo "════════ 2. 本次开机以来所有"重启隧道"记录 ════════"
grep -E '重启 \[' /root/lanremote-relay/watchdog.log 2>/dev/null | tail -25 | sed 's/^/ /'
echo
echo "════════ 3. 重启的间隔(判断是不是过频)════════"
grep -E '重启 \[' /root/lanremote-relay/watchdog.log 2>/dev/null \
| grep -oE '^\[[0-9-]+ [0-9:]+' | sed 's/\[//' \
| awk '{
cmd = "date -d \"" $0 "\" +%s"
cmd | getline ts; close(cmd)
if (prev) printf " %s (+%d 秒)\n", $0, ts - prev
else printf " %s\n", $0
prev = ts
}' | tail -25
echo
echo "════════ 4. 每次重启的原因分类 ════════"
grep -E '重启 \[' /root/lanremote-relay/watchdog.log 2>/dev/null \
| sed -E 's/^\[[0-9-]+ [0-9:]+\] //' \
| sed -E 's/(距上次 [0-9]+ 秒)//' \
| sed -E 's/\|/ | /g' \
| awk -F'——' '{print $1}' | sed 's/[0-9]\+ 次/N 次/' \
| sort | uniq -c | sort -rn | head -12 | sed 's/^/ /'
echo
echo "════════ 5. 服务重启计数(systemd 层面)════════"
for svc in lanremote-tunnel lanremote-tunnel-h2; do
n=$(journalctl -u "$svc" --since '3 hours ago' --no-pager 2>/dev/null | grep -c 'Starting')
echo " $svc 最近 3 小时启动 $n 次"
done
echo
echo "════════ 6. 最近 1 小时的完整 watchdog 活动 ════════"
awk '/\[10-07 (1[78]):/' /root/lanremote-relay/watchdog.log 2>/dev/null | tail -25 | sed 's/^/ /'
echo
echo "════════ 7. 当前状态 ════════"
echo " watchdog: $(systemctl is-active lanremote-watchdog.timer)"
echo " 状态文件: $(cat /root/lanremote-relay/watchdog.state 2>/dev/null | tr '\n' ' ')"
echo " 上次重启: $(date -d @$(cat /root/lanremote-relay/watchdog.last_restart 2>/dev/null || echo 0) '+%Y-%m-%d %H:%M:%S' 2>/dev/null)"
echo " 现在: $(date '+%Y-%m-%d %H:%M:%S')"
echo " 连接数: quic=$(curl -s --max-time 4 http://127.0.0.1:20241/metrics 2>/dev/null | grep ha_connections | awk '{print $2}') http2=$(curl -s --max-time 4 http://127.0.0.1:20242/metrics 2>/dev/null | grep ha_connections | awk '{print $2}')"
echo " 长测进度: 健康 $(wc -l < /root/long2h_health.tsv) 条, 轮询 $(wc -l < /root/rp_poll30.tsv) / 30"