mirror of
https://gitee.com/xmz7891/ykxmz.git
synced 2026-10-18 13:40:45 +00:00
用户早上撞上 Cloudflare Error 1033。查出来是设备**掉电重启**:
上次开机到重启之间没有任何日志落盘(直接断电的特征),
dmesg 里还有 "l13: voltage operation not allowed"。
重启本身不是软件问题,但**恢复太慢**:
Startup finished in 3.846s (kernel) + 2min 6.358s (userspace) = 2分10秒
那 2 分钟里浏览器看到的就是 1033。
根因:
这台机器 NetworkManager 和 systemd-networkd 同时在跑,
但 wlan0 归 NetworkManager 管。
NetworkManager-wait-online -> 开机 9 秒成功
systemd-networkd-wait-online -> 等一个不归它管的网络,
干等 2 分钟超时,然后 failed
network-online.target 要等**两个都完成**,
被那个失败的拖了整整 2 分钟,
relay / tunnel / net-tune 全跟着等。
修法:
1. mask 掉 systemd-networkd-wait-online(网络不归它管,只会拖后腿)
2. watchdog 首次检查从"开机后 2 分钟"提前到 45 秒
实测(重启验证过):
修之前 Startup finished in 3.846s + 2min 6.358s = 2分10秒
修之后 Startup finished in 3.218s + 14.060s = 17.3秒
掉电重启后公网恢复时间:**24 秒**(快了 5 倍多)
配套加了 scripts/speed-up-boot.sh,换设备时直接跑一遍。
顺带确认重启后一切自动恢复:
三个服务 active + enabled ✓
keepalive 30/10/3、MTU 探测、MSS 钳制、slow_start=0 全部持久化 ✓
隧道 4 条连接 http2 ✓
官网 / 管理页 / 截图全部 200 ✓
30 lines
1.2 KiB
Bash
30 lines
1.2 KiB
Bash
#!/bin/bash
|
|
# 重启验证:开机到公网可用要多久
|
|
#
|
|
# 背景:用户撞上的 1033 是设备**掉电重启**造成的。
|
|
# 修之前 systemd-analyze 显示用户空间花了 2 分 6 秒,
|
|
# 因为 systemd-networkd-wait-online 等一个不归它管的网络,
|
|
# 干等 2 分钟超时失败,把 network-online.target 一起拖住。
|
|
# 已经把它 mask 掉了。
|
|
#
|
|
# 这个脚本:记录重启前的状态 -> 重启 -> 从外面轮询公网 ->
|
|
# 记录它多久恢复。
|
|
set -u
|
|
|
|
MARK=/root/reboot_test_mark.txt
|
|
echo " 当前开机时长: $(uptime -p)"
|
|
echo " 当前时间: $(date '+%H:%M:%S')"
|
|
echo " 服务状态:"
|
|
for svc in lanremote-relay lanremote-tunnel lanremote-nettune; do
|
|
printf " %-22s %s\n" "$svc" "$(systemctl is-active $svc)"
|
|
done
|
|
echo " 隧道连接: $(curl -s --max-time 5 http://127.0.0.1:20241/metrics 2>/dev/null | grep '^cloudflared_tunnel_ha_connections' | awk '{print $2}')"
|
|
echo " 公网: HTTP $(curl -s -o /dev/null -w '%{http_code}' --max-time 15 -H 'User-Agent: LanRemote/1.4.0' https://relay.xxmxxs.top/v1/health)"
|
|
|
|
date +%s > "$MARK"
|
|
echo
|
|
echo " 重启前的时间戳已写入 $MARK: $(cat $MARK)"
|
|
echo " **现在重启** —— 大概 1 分钟内会断开"
|
|
sleep 2
|
|
reboot
|