跳转至

基础设施-部署-服务器无日志宕机需强制重启

问题现象

  • 访问 https://news.queding.hk/ 超时(TCP 连接被拒绝,TCP 握手都完不成)
  • SSH 登录提示 Connection closed by 120.77.218.217 port 22(sshd 还活着但 fork 不了 shell)
  • Ping 服务器 IP(120.77.218.217)正常(17-19ms,0% 丢包),仅 ICMP 通
  • 服务器 nginxnews-backendsshd 进程均无 crash 日志,systemd journal 最后一条日志停留在 19:11 CST 后直接中断

核心问题

  1. 根因:阿里云 ECS 底层平台异常(最可能)
  2. 无 OOM Killer 记录、无 kernel panic、无 segfault
  3. 系统日志从 19:11 直接跳到强制重启(20:19),呈现硬断电式中断
  4. 纯 TCP 服务全挂(nginx :443、sshd :22、backend :8000),ICMP 仍通 → 内核协议栈半死状态
  5. 典型阿里云宿主机故障或实例迁移失败症状
  6. 服务器信息:阿里云深圳 ECS,CentOS Stream 9,1.6GB RAM,40GB 磁盘(占用 29%)

解决方法

  1. 登录阿里云 ECS 控制台 → 找到实例(IP 120.77.218.217)→ 强制重启
  2. 无法 SSH 则使用控制台 VNC 远程连接操作
  3. 重启后验证:
    ssh news "systemctl status nginx news-backend"
    curl -s -o /dev/null -w '%{http_code}' https://news.queding.hk/
    

下次防错措施

快速定位

  1. 查看宕机前最后的监控快照(每分钟一条):
    ssh news "cat /www/news/log/monitor/$(date +%Y%m%d).log | tail -60"
    
  2. 查看 sysstat 细粒度系统数据(每 2 分钟采集):
    # 内存趋势
    ssh news "sar -r -f /var/log/sa/sa$(date +%d)"
    # 系统负载
    ssh news "sar -q -f /var/log/sa/sa$(date +%d)"
    
  3. 如 SSH 也连不上,直接去阿里云 ECS 控制台 VNC 登录并强制重启

已部署的预防监控

  • monitor.sh:每分钟记录 MEM total/used/avail | LOAD 1/5/15min | PROC 数 | UPTIME/www/news/log/monitor/YYYYMMDD.log,avail < 300MB 时追加 Top 5 内存进程告警,日志自动轮转保留 30 天
  • sysstat:采集频率从 10 分钟提升到 2 分钟,数据存储在 /var/log/sa/,重启后可用 sar 回溯

流程改进

  • 宕机后先查 monitor 日志确认是否内存耗尽,再决定是否应急扩容
  • 在阿里云 ECS 控制台启用"实例健康监控"和宕机迁移通知(不依赖服务器自身记录)