Files
ykxmz/_build/rp_periodic.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

49 lines
2.3 KiB
Bash

#!/bin/bash
# 分析"每 9 分钟一次异常"的周期性 —— 到底是谁在定期动手
set -u
echo "════════ 1. 异常轮询的时刻 ════════"
awk -F'\t' '$3>90000 || $2!="200" {print " #" $1 " " $4 " 码=" $2 " " $3 "ms"}' \
/root/rp_poll30.tsv 2>/dev/null
echo
echo "════════ 2. 连接数掉到 3 以下的时刻(全量)════════"
awk -F'\t' 'NR>1 && $2 ~ /^[0-9]+$/ && $3 ~ /^[0-9]+$/ && ($2+$3)<4 {
print " " $1 " quic=" $2 " http2=" $3
}' /root/long2h_conns.tsv 2>/dev/null
echo
echo "════════ 3. 这些时刻前后 watchdog 做了什么 ════════"
tail -40 /root/lanremote-relay/watchdog.log 2>/dev/null | sed 's/^/ /'
echo
echo "════════ 4. QUIC 实例的连接事件(最近 40 条)════════"
grep -E 'Registered|Lost|Unregistered' /root/lanremote-relay/tunnel.log 2>/dev/null \
| tail -40 | sed -E 's/^(....-..-..T..:..):[0-9]+Z .*(Registered tunnel connection|Lost connection|Unregistered).*ip=([0-9.]+).*location=([a-z0-9]+).*/\1 \2 \3 \4/' \
| sed 's/^/ /'
echo
echo "════════ 5. 有没有周期性(看事件间隔)════════"
echo " 最近 20 次 Lost connection 的时间:"
grep 'Lost connection' /root/lanremote-relay/tunnel.log 2>/dev/null \
| tail -20 | cut -c1-19 | sed 's/^/ /'
echo
echo "════════ 6. 线程/进程层面:cloudflared 有没有重启过 ════════"
echo " QUIC 实例进程启动时间: $(ps -o lstart= -p $(pgrep -f 'protocol quic' | head -1) 2>/dev/null)"
echo " HTTP/2 实例进程启动时间: $(ps -o lstart= -p $(pgrep -f 'protocol http2' | head -1) 2>/dev/null)"
echo " QUIC 服务重启次数(本次开机以来):"
journalctl -u lanremote-tunnel --since '2 hours ago' --no-pager 2>/dev/null \
| grep -c 'Starting\|Stopped' | sed 's/^/ /'
echo
echo "════════ 7. 系统层面有没有定期任务 ════════"
echo " systemd timer:"
systemctl list-timers --no-pager 2>/dev/null | head -12 | sed 's/^/ /'
echo " cron:"
crontab -l 2>/dev/null | grep -v '^#' | sed 's/^/ /' || echo " (空)"
echo
echo "════════ 8. 连接数变化明细(最近 30 条采样)════════"
tail -30 /root/long2h_conns.tsv 2>/dev/null | sed 's/^/ /'