2026-10-19-server-10-50-80-63-unreachable

lq · 10/19/2026

10.50.80.63 连接故障排查(2026-10-19)

做什么 / 为什么

用户报告 10.50.80.63(vllm-dev-63,root/22 及 8322)SSH 连接不上,从本地 macOS 逐步排查定位原因。

排查步骤与关键结果

检测项结果
ping(ICMP)✅ 通,4/4 收包,延迟 1.8–7.3 ms,TTL 60
TCP 22 端口✅ 三次握手成功
TCP 80 端口✅ 三次握手成功
TCP 8322 端口✅ 三次握手成功
SSH banner(22)❌ Connection timed out during banner exchange,服务端 0 字节
SSH banner(8322)❌ 同样超时无 banner
HTTP GET /(80)❌ curl 28 超时,0 字节响应
尝试 vllm-dev-35 跳板❌ Permission denied (publickey,password),本机无该机凭据

结论

网络层完全正常(ICMP/TCP 均通),但所有端口的应用层协议(SSH/HTTP)完全不响应。 典型症状是「TCP 能建链、应用层无应答」,指向服务器本身处于半死状态,而非网络/防火墙问题:

最可能的原因(按概率排序):

  1. 服务器负载极高或资源耗尽:CPU/内存/磁盘 IO 打满、OOM 频繁、swap 死亡循环,用户态进程无调度机会。若该机在跑 vLLM/大模型推理,大概率是显存/内存耗尽或推理任务把机器压死
  2. fs 挂载异常(如 NFS/网络存储 hang),sshd 等
  3. 内核活锁/驱动问题(如 GPU 驱动 D 状态锁死)

基本可以排除:网线/交换机故障、IP 冲突、防火墙 DROP(那样 TCP 握手不会成功)。

影响

后续建议

  1. 走带外管理通道:IPMI/BMC/iDRAC 控制台登录,查看是否 OOM、D 状态进程堆积、GPU/NVMe 驱动异常
  2. 若无带外,联系机房现场接显示器键盘,或直接硬重启(长按电源/拔电)
  3. 恢复后登录检查:dmesg | grep -i -E 'oom|nvidia|nvme'、journalctl -b -1 -u ssh、nvidia-smi、df -h、uptime,确认根因(大概率是推理任务把内存/显存压爆)
  4. 如有同网段可达的兄弟机(如 10.20.152.x 系列),配置好密钥后可从那边 ssh/ping 交叉验证

排查环境:本地 macOS(本机直连),记录时间 2026-10-19 09:54 +08
SSH config 相关条目:10.50.80.63(root/22)、vllm-dev-63(root/8322)

补充:traceroute 结果(09:55 完成)

 1  * * *              (本机网关不回 TTL 超时)
 2  10.23.252.1   ~3-22ms
 3  10.0.1.25/.33 ~3-6ms
 4  10.0.1.22/.18 ~2-3ms
 5+ * * *              (后续跳点静默)

前 4 跳响应正常且延迟无异常跳变;第 5 跳起全部静默属常见现象(中间路由器普遍不回 ICMP TTL exceeded)。结合 ping 双向通 + TCP 握手成功,网络路径无断点,维持原结论:服务器本机假死(应用层无响应),非网络故障。

补充:假死根因分析(10:20-10:35 复盘)

服务器重启后状态(10:20)

sar 时间线(关键证据)

时间sda 写入%utilawaitiowaitloadD 状态任务
~05:40 前正常 ~2-3MB/s~30%~15ms低~120-150~100
05:5086 MB/s69%189ms———
06:28(峰值)508 MB/s86%168ms———
06:39-09:5412-37万 kB/s98.8%256ms86%450-680350-550
10:07重启

CPU iowait 从正常值飙到 86%,即几乎所有 CPU 时间都在等磁盘;load 从 ~140 冲到 680;350-550 个任务长期 blocked。整机 48 核被磁盘 IO 卡死,用户态进程(含 sshd)拿不到调度——这就是「TCP 能握手但 SSH 无 banner」的直接原因。

注:故障期间内存 94% 使用率但 sar -W 显示换页为 0(swappiness=0 且无 swap 设备),排除 swap 抖动主因;kbcommit 236% 是长期慢性内存 overcommit,属背景风险。

根因

.bash_history 时间线(.bash_history mtime 06:22:34,/root mtime 06:22:36):

06:2x  cd /root/dbbackup/ && bash deploy.sh -c deploy.conf
06:2x  bash restore.sh --version
06:2x  kubectl -n highgo exec highgo-repo-host-0 -c pgbackrest -- pgbackrest --stanza=db --repo=2 info
06:22  bash restore.sh        ← 触发点

06:22 有人在这台机器上执行了 HighGo 数据库还原脚本 restore.sh(还原 HighGo + MinIO 备份),触发大规模备份下载/落盘。sar 磁盘写入从 05:50 开始爬升(对应 cron 05:30 的 minio-mirror 增量同步仅 1 分钟完成、Total 0B,可排除),06:28 达峰值 508MB/s,随后 sda 单盘 98.8% 饱和持续 3.5 小时。

佐证:MinIO 容器日志 06:55(UTC 22:55)报 taking drive /data offline: unable to write+read for 37.559s —— 磁盘健康但被写满队列,健康检测写超时 37 秒。

同时排除:

为什么会「假死」而不是彻底断网

遗留风险与建议

  1. highgo-standby 容器正在崩溃重启循环:license 加载失败(hg_lic load license file failed,备份 license 文件超 100 个上限),需清理 $HGDB_HOME/etc/lic/ 后重启
  2. 数据库还原未完成:/var/lib/dbbackup-restore 只有 10-15 的旧 run 目录,今天 06:22 的还原没有产物——操作人需确认是否重跑
  3. 无 swap 且 overcommit 236%:内存冗余不足,一旦 IO 风暴叠加内存压力更易死锁,建议评估配置小 swap 或调低 overcommit
  4. journald 未持久化:建议开启 Storage=persistent,下次故障可查内核日志
  5. 单盘 sda 承载一切(22T 系统盘同时是数据盘):备份/还原类大 IO 任务建议限速(如 pv -L、mc --limit、ionice)或错峰执行,避免再次压死整机
  6. 载入还在跑:podman load -i images/template/allinone.tar(10:15 启动)目前 sda %util 82%,建议等它完成后再做其他大 IO 操作

Published with md-log

2026-10-19-server-10-50-80-63-unreachable