Files
karuo-ai/01_卡资(金)/金仓_存储备份/群晖NAS管理/开发文档/CKBNAS_卡顿原因逐项说明_20260606.md
2026-07-19 00:21:46 +08:00

6.1 KiB
Raw Blame History

CKBNAS 卡顿原因逐项说明2026-06-06

设备DS1825+ · 192.168.110.101(家里 ovs_eth0
现象:开机后几分钟内 ping/端口通 → DSM 白屏或 HTTP 000/超时 → SSH banner 超时 → 最后 ping 也不通。


已排除(不是本轮主因)

结论
AI 自动改 IP / 网络守护 已于 05:36 全部 .disabledcrontab 无 route-only/watchdog
DHCP 抢路由 当前静态 110.101,无 dhclient
双网卡断线 路由正确时 default via 110.1 dev ovs_eth0

卡顿原因(按杀伤力排序)

① btrfs scrub主因 · 已实锤

  • 是什么BTRFS 全盘校验,持续读盘,占满磁盘 IO。
  • 证据05:46:34 重启后 26 秒 即自动开始 scrub取消后本机 local_dsm=200,耗时 0.18s(之前 8s 超时 / HTTP 000
  • 表现load 825+IO wait 高nginx/synoscgi 排队 → 浏览器白屏sshd 来不及交换 banner →「端口 22 开但 SSH 超时」。
  • 计划 scrub 其实已关datascrubbing.confscheduleenabled=0scrubbingscheduled=0
  • 真正触发异常关机(卡顿后硬重启/断电)→ DSM 发 StgMgrScrubbingAbnormalShutdownNotify下次开机自动续扫(与计划无关)。
  • 你要做(最重要)
    1. 尽量避免硬重启;卡顿时等 510 分钟或让 Mac ckbnas_gentle_watch.sh 自动降载。
    2. 降载脚本会 scrub cancel + 把 datascrubbing.statusscrubbingstatus 清为 0。
    3. DSM → 存储管理器 → 确认计划 Scrub 保持关闭;需要体检时再手动跑。
# SSH 能进时应急
sudo btrfs scrub cancel /volume1

② 开机 IO 风暴scrub + 套件 + Docker 叠加)— 容器是第二大杀手

  • 重启后 2 分钟内 load 曾到 816+IO 占大头)。
  • Container Manager 默认 restart: unless-stopped20+ compose 同时 docker start,与 scrub 抢同一块盘。
  • 实测端口Qdrant/工作手机 SDK 已起,Mongo :27017、Gitea :3000 → 部分栈半启动、反复重试更耗 IO。
  • 进程里常见:kworker … btrfsdockerd、各容器 entrypoint。
  • 表现:先用一会儿还行,几分钟后 IO 打满 → DSM 白屏、SSH banner 超时。
  • 已落地2026-06-06
    • ckbnas_docker_reduce_io.sh:全容器 restart=no + 停止 + 关 Container Manager 自启
    • ckbnas_docker_staged_boot.shtier1→5 分批mongodb → qdrant → workphone → gitea → frpc每档间隔 90s15min
    • install_ckbnas_docker_staged_cron.sh@reboot 注册,禁止一次性全启
    • Mac 部署:bash 群晖NAS管理/scripts/deploy_ckbnas_docker_staged_mac.sh
  • 手动按需不自动启Ollama、官网、Soul、VM、玩值电竞等 → DSM Container Manager 单个开。

③ 定时任务叠加(每 2/5 分钟)

当前 /etc/crontab 仍活跃(非 AI 网络脚本):

频率 任务
*/5 git_sync、SynologyDrive 同步、ollama ensure
多条 synoschedtask(备份/清理等,凌晨为主)
*/2 frpc + karuo-ai gateway(降载脚本已临时注释)
  • 表现开机本就高负载时cron 再点火 → 雪上加霜。
  • 你要做:稳定后评估 */5 三条是否可改为 */30 或仅手动。

④ 重套件后台任务

降载脚本已临时停止CloudSync、SynologyPhotos、SynoFinder、SynologyDrive、Moments、ActiveBackup 等。

  • 表现:索引、缩略图、同步与 scrub 抢同一块盘。
  • 你要做:不用时保持停止;要用时再开单个套件。

⑤ SSH banner 超时 / ping 后期不通(症状链,不是独立根因)

阶段 含义
ping 通、22/5000 开、HTTP 000 网卡活着,CPU/IO 忙,应用层无响应
SSH banner exchange timeout sshd 进程在,握手队列排不上
ping 也不通 系统进入 过载僵死 或正在 再次重启/内核卡死
  • 不要Mac 侧高频 SSH 轮询(会加重负载)。已改为 3 分钟一次 轻量巡检 ckbnas_gentle_watch.sh

本轮已自动处理

  1. 05:47 上传并执行 ckbnas_diagnose_and_degrade.sh:取消 scrub、停重套件、注释 */2 frpc/gateway、重启 nginx → DSM 200 / 0.16s
  2. Mac 启动 ckbnas_gentle_watch.shpid 见日志 ~/Library/Logs/ckbnas_gentle_watch.logping 通且 DSM≠200 时 SSH 一次 降载。
  3. 计划注册 @reboot sleep 90 自动降载SSH 窗口关闭前未完成写入,待下次连通补注册)。

你现在可以怎么做

A. 完全连不上(当前 ping 100% 丢包)

  1. 510 分钟 看是否自行恢复(上次 scrub 取消后约 1 分钟曾恢复)。
  2. 仍不通:前面板长按电源 4 秒 软关机 → 再按一次开机。
  3. 开机后 90 秒内不要开浏览器刷 DSM;等 Mac 巡检或你 SSH 跑降载。
  4. 能进 DSM 后 立刻关计划 scrub(见 ①)。

B. ping 通但 DSM 白屏

# Mac 一次应急(勿循环狂刷)
sshpass -p 'zhiqun1984' ssh fnvtk@192.168.110.101 \
  'echo Zhiqun1984 | sudo -S sh /volume1/homes/fnvtk/scripts/karuo-network-watchdog/ckbnas_diagnose_and_degrade.sh'
curl -m8 -w "dsm=%{http_code} t=%{time_total}s\n" -o /dev/null http://192.168.110.101:5000/

C. 稳定后P1

  • Time Machinetm_netbackup_cred_sync.sh 后重挂 smb://fnvtk@192.168.110.101/NetBackup
  • 外网:open.quwanzhi.com:5200frp仅作备用本机卡时隧道也慢

日志位置

路径 内容
NAS …/logs/diagnose_degrade.log 每次降载前后 load、scrub、DSM 本机 curl
Mac ~/Library/Logs/ckbnas_gentle_watch.log 3 分钟巡检 ping/dsm 与 SSH 结果

一句话结论

不是网络脚本复发,是重启后 btrfs scrub + 开机重任务把 IO 打满;取消 scrub 后 DSM 秒开,但 DSM 里计划 scrub 未关则会再次复发。请先关计划 scrub再观察是否还会「用几分钟就全挂」。