服务器网页打不开、SSH 连不上,控制台的远程连接也一直黑屏,这种情况很多人都遇到过。“阿里云卡死”听起来像平台出了问题,但多数时候根源在实例本身。重启能让页面重新出现,却不会告诉你为什么卡住,等它再卡一次,你还是得从头查。所以先查清楚,再决定要不要动手。

常见原因
实例无响应大致可以归为几类,按常见程度排列如下:
- 内存耗尽:进程泄漏或并发突增会把内存占满。内存一紧,系统开始频繁换页,整体就发僵了。如果 swap 使用量持续上涨,基本就是这个方向。
- CPU 积分耗尽:突发性能实例(如 t 系列)长期高负载会把积分用完,性能被压到基线,表现为很慢、像卡住了。监控里要同时看积分余额,只看使用率容易漏判。
- 磁盘写满或 IO 打满:日志无限增长、数据库写入过猛,都会让写操作阻塞。磁盘剩余空间和 IO 等待值都要看。
- 带宽或网络异常:遭遇流量攻击,或者安全组、防火墙规则被改错,外部访问不进来。如果在本机上访问本地地址正常,问题多半出在网络这一层。
- 内核或驱动异常:比较少见,多和系统升级、内核模块有关。如果问题出现在升级之后,优先对比内核版本和模块变化。
- 安全事件:服务器被植入挖矿程序,CPU 长期被占满,同样会表现为卡死。发现不认识的进程长期占用高 CPU,要按安全事件处理。
一个典型案例
某小型电商团队的订单服务跑在一台 4 核 8G 的 ECS 上。运行一段时间后,每天下午都会准时出现访问超时,控制台也连不上。第一次运维直接强制重启,服务恢复了,但两小时后问题又来了。
这次他们没有急着再重启,而是先去云监控里看曲线。CPU 长期贴着 100%,积分余额也快见底了。继续查进程,发现一个日志导出脚本在高峰期会把整张订单表读进内存,内存持续攀升,到最后触发大量换页。同时日志目录占掉了大半磁盘,写入也慢下来。
团队做了三件事:导出脚本改成分页查询,日志加上轮转和保留天数限制,实例升级为非突发型规格。之后问题没有再出现。这个案例说明,“卡死”通常是几项资源同时逼近上限的结果。如果只盯着 CPU,很容易误以为是计算压力,把内存、磁盘和积分放在一起看,才能看出是连锁反应。
排查步骤
- 先看监控:在云监控里查看 CPU、内存、磁盘、带宽的历史曲线,找出卡死前哪一项先出现异常。哪条曲线先断或先涨,往往就是线索的起点。
- 确认实例状态:在控制台看实例是否运行中、是否欠费,有没有安全或运维事件通知。欠费或被限制时,有些问题根本不在系统层面。
- 尝试远程连接:通过控制台的远程连接或 VNC 进入系统,观察启动是否卡住,有没有报错或内核输出。能进去看到画面,就不必急着断定是平台故障。
- 检查日志:连上之后查看 /var/log/messages、dmesg 输出,以及应用自身的日志,重点搜索 OOM、只读、IO error 这类关键字。
- 检查进程:用 top、ps 看是否有异常高占用的进程。遇到不认识的进程名,先记下来,不要直接杀掉。
- 检查安全组和网络:确认端口规则没有被误改,必要时查看带宽和流量统计。如果本机正常、外网不通,就重点排查这一层。
应急处理要谨慎
实在登录不了,再考虑重启。普通重启一般比强制停止稳妥。但系统已经无响应时,强制重启有可能导致文件系统或数据库数据损坏。动手之前先做快照或备份,控制台上几分钟就能完成,比事后补救省事得多。
如果怀疑存在入侵,先把实例隔离,保留现场日志,再慢慢排查。直接清理可疑进程或删除文件,很容易把证据一起抹掉。
如何预防
卡死大多能提前看出苗头。平时可以做好以下几件事:
- 为 CPU、内存、磁盘、带宽设置告警阈值,异常时直接通知到负责的人。
- 对日志做轮转和清理,并设置保留天数,避免磁盘被无限占满。
- 按业务峰值选择规格。突发型实例适合负载波动大的场景,长期高负载的服务如果用它,迟早会碰到积分耗尽的问题。
- 定期做快照,重要数据另外做异地备份。
- 及时更新系统补丁,安全组只开放必要端口,减少被入侵的机会。
总结
遇到阿里云卡死,先看监控,再查日志和进程,把重启放到最后再考虑。大部分问题在数据里都能找到线索。告警和备份提前做好,下次出问题时你会从容很多,而不是只能干等。