服务器出故障时,最贵的不是修不好,是瞎试。这篇给你一套可复用的排查方法论 + 六大类常见症状的诊断命令链。收藏这一篇,遇到问题按图索骥。所有细节专题文站内均有深度篇,文中随踩随链。
一、排查方法论:四条铁律
铁律 1:先恢复,后定位
生产环境故障,先止损再查因:网站挂了先回滚到上一个可用版本,服务卡死先重启拉到正常水位。日志和现场(内存快照、core dump)在重启前先抓一份。用户在乎的是服务在不在,不在乎你为什么挂的。
铁律 2:自上而下分层定位
任何故障按这个顺序过一遍,90% 的问题在前三层现形:
应用层(服务报错、代码 bug)
↓
系统层(进程、内存、CPU、磁盘)
↓
网络层(端口、防火墙、DNS、路由)
↓
硬件/虚拟化层(云平台故障、超售、宿主机问题)典型错误是一上来就翻应用日志,结果查了两小时发现是磁盘满了。
铁律 3:一次只改一个变量
"重启试试""改改配置再观察"——同时改三个地方,好了不知道哪个起效,坏了不知道哪个闯祸。每次只做一个变更,观察效果,再走下一步。
铁律 4:二分法缩小范围
系统性的慢或错(比如上周还好的今天全报错),用变更点二分:上周到现在做了哪些操作(更新、配置变更、新部署)?逐个回滚验证,比通读日志快十倍。
二、症状一:连不上服务器(SSH 不通)
最高频也最吓人。按可能性排序:
# 1. 本地先 ping,通不通说明网络到没到
ping 服务器IP
# 2. ping 通但 SSH 不通,测端口
telnet 服务器IP 22 # 或 nc -vz 服务器IP 22
# 3. 端口通但连不上,本地 SSH 详细模式看卡在哪
ssh -vvv root@服务器IP| ping | 22 端口 | 结论 | 动作 |
|---|---|---|---|
| 不通 | — | 网络/机器层级问题 | 云控制台看实例状态,VNC 进控制台 |
| 通 | 不通 | 防火墙/安全组/SSH 挂了 | 控制台 VNC 登录查防火墙和 sshd |
| 通 | 通 | SSH 服务或认证问题 | 看 ssh -vvv 输出,多半是密钥/密码/配置 |
控制台 VNC 是你的救命通道——SSH 挂了但机器活着,从云厂商网页控制台进去,直接修。所以:别把 SSH 端口改完就忘了防火墙规则,改之前先测试新端口能连再关旧的,安全加固的正确姿势见SSH 安全加固。
常见根因:防火墙规则改错(见Linux 防火墙配置)、内存耗尽触发 OOM 把 sshd 杀了、云平台安全组没放行、磁盘满了导致无法登录。
三、症状二:网站打不开
# 1. 域名解析对不对
dig yourdomain.com +short # 返回的 IP 对吗
# 2. 本地 curl 通不通(绕过浏览器缓存)
curl -Iv http://127.0.0.1 # 本机直连,看 Web 服务活着没
# 3. 端口监听状态
ss -tlnp | grep -E ':(80|443)'
# 4. Web 服务进程
systemctl status nginx php-fpm # 按实际服务| curl 127.0.0.1 | ss 看到 80 | 结论 |
|---|---|---|
| 通 | 是 | 服务正常,问题在防火墙/DNS/CDN |
| 不通 | 是 | 服务假死,看错误日志 |
| 不通 | 否 | 服务没起/挂了,systemctl 看状态 |
按图往下走:服务挂了看日志(journalctl -u nginx -n 100);防火墙/DNS 问题见防火墙配置和DNS 记录指南;网站整体变慢的专项见网站变慢排查;被挂马/篡改的应急见网站木马清理。
四、症状三:服务器卡顿、变慢
"感觉变慢了"是最难的排查,因为没有明确报错。按三板斧顺序来:
# 第一板斧:top 看谁在吃 CPU
top # 按 P 排序,看 %CPU;按 M 排序,看 %MEM
# 第二板斧:内存到底够不够
free -h
vmstat 1 5 # 看 si/so(swap 换入换出)——非 0 就是内存告急
# 第三板斧:磁盘 IO 是不是瓶颈
iostat -xz 1 # %util 接近 100% = 磁盘打满
iotop # 看哪个进程在写盘| 现象 | 根因 | 深入 |
|---|---|---|
| CPU 单核 100%,某进程 | 该进程忙/死循环 | pidstat -1 看线程,strace 跟系统调用 |
| si/so 疯狂跳,可用内存趋零 | 内存不足,在 swap | 见内存泄漏排查、Swap 优化 |
| %util 100%,await 高 | 磁盘 IO 瓶颈 | 见磁盘 IO 指南,日志/数据库重灾区 |
| load 高但 CPU 闲 | IO 等待或进程 D 状态 | ps aux 找 D 状态进程,查 NFS/磁盘 |
| 白天快半夜卡 | 定时任务/备份在跑 | crontab -l + /etc/cron.d/,见Crontab 指南 |
性能分析工具全景见Linux 性能分析三板斧,系统化的资源类故障见服务器资源故障排查。
五、症状四:磁盘满了
df -h # 哪个分区满了
du -sh /var/log/* 2>/dev/null | sort -rh | head # 谁在吃空间
lsof +L1 # 找"已删除但还被进程占用"的大文件(重启才能释放)经典陷阱:df 显示满了但 du 找不到大文件——多半是日志文件被 rm 了但服务还开着文件句柄,空间不释放。lsof +L1 抓出现犯,重启服务解决。专项排查见磁盘写满故障排查。
另一个隐形杀手是 inode 耗尽(小文件太多):df -i 也满了,但 df -h 还有空间——会话文件、缓存碎片是元凶,见fd/inode 耗尽排查。
根治手段:logrotate 管日志(见Linux 日志管理),定期巡检,监控告警。
六、症状五:内存耗尽与 OOM
free -h # 总量/已用/可用
dmesg | grep -i "oom\|killed" # OOM Killer 的处决记录
ps aux --sort=-%mem | head # 谁吃得最多OOM Killer 杀进程的规律是"谁大杀谁"——你的数据库、AI 模型进程通常是最大的,所以死得最惨。排查内存见内存泄漏排查实战。
游戏服/AI 场景特供:游戏服内存随在线人数涨,AI 模型全量加载——这两类是内存耗尽重灾区,配置和 swap 预案提前做,见Swap 分区与内存优化和AI 应用选型。
七、症状六:网络问题(能连但难用)
# 本机到网关通不通
ping 网关IP
# DNS 解析慢/失败
dig yourdomain.com # 看 Query time
cat /etc/resolv.conf # DNS 服务器设对没
# 到目标的服务通不通、慢在哪
mtr yourdomain.com # 逐跳看延迟和丢包
# 端口通不通
nc -vz 目标IP 端口
# 本机谁在连外网、连到哪
ss -tnp | head| 现象 | 根因 | 深入 |
|---|---|---|
| mtr 某跳开始丢包 | 中间网络/机房线路 | 换地域/换线路,见地域延迟指南 |
| 解析慢 | DNS 服务器问题 | 换 223.5.5.5 / 119.29.29.29 |
| 服务时通时断 | 防火墙规则/连接数打满 | ss -s 看连接状态,见网络排查工具大全 |
| 被 DDoS | 流量异常暴涨 | 见DDoS 基础认知与防护 |
| 游戏服卡顿 | 丢包/抖动/MTR 异常 | 见游戏服卡顿排查 |
抓包分析见Tcpdump 实战,Web 日志分析见Web 日志分析。
八、日志:排查的终极武器
前面所有分支,最后都落到日志。日志在哪、怎么看:
| 日志 | 位置/命令 | 看什么 |
|---|---|---|
| 系统日志 | journalctl -xe / /var/log/syslog | 服务崩溃、OOM、硬件错误 |
| 服务日志 | journalctl -u 服务名 -n 200 | 该服务的报错堆栈 |
| Nginx | /var/log/nginx/access.log / error.log | 5xx、慢请求、攻击特征 |
| 数据库 | MySQL 错误日志 / 慢查询日志 | 锁等待、慢 SQL |
| 安全日志 | /var/log/secure | 暴力破解、异常登录 |
# 实时跟踪
journalctl -f
# 看今天所有的错误级日志
journalctl --since today -p err
# Nginx 错误 TOP 统计
awk '{print $9}' /var/log/nginx/access.log | sort | uniq -c | sort -rn日志集中管理(多机场景)见Linux 日志管理与 logrotate和日志集中管理。
九、应急预案:把手册变成肌肉记忆
排查方法论背得再熟,不如提前准备好:
- 监控告警先行:CPU/内存/磁盘/带宽超阈值就告警,故障早发现一小时,排查难度低十倍。方案见Prometheus 监控入门或轻量Netdata
- 备份可回滚:重要变更前快照,坏了秒回滚,见服务器备份策略
- 文档化环境:装过什么、改过什么配置,记在案——三个月后你绝对记不住
- 留好控制台通道:云厂商 VNC/救援模式入口存书签,SSH 全挂时的唯一退路
被入侵类故障(排查逻辑不同,先取证后修复)走另一套流程,见服务器被入侵处理指南和安全应急响应完全手册。
结语
服务器故障排查的核心心法:先恢复服务,再自上而下分层定位,一次只改一个变量。六大症状(连不上/打不开/卡/满/OOM/网络)各有一条命令链,按图走一遍,比瞎试快十倍。把这篇收藏进书签,下次出事直接对着命令敲。
跑关键业务的服务器,稳定压倒一切——可以看看财富云计算:NAT 型云服务器 SSD 系统盘 + 快照、支持热升级不换机,价格比独立 IP 机型省一半以上,配一套监控 + 备份,个人和小团队运维也从容。
延伸阅读
- Homepage 个人仪表盘:把散落各处的服务收进一个首页
- SSL 证书完全指南:免费证书、自动续期与不过期监控
- 数据备份体系完全手册:从随手拷到 3-2-1,让数据永远丢不了
- 压测与容量规划:上线前就知道你的服务器能扛多少人
- AdGuard Home 内网 DNS:全家去广告、防劫持、内网解析一站解决
- Hugo 静态博客搭建:秒开的博客,部署只要一个目录
- 安全应急响应完全手册:服务器被入侵后,按这个流程走
- 游戏服运营完全手册:从开服到停服,把一台服务器运营成百年老店

[...]高可用(HA)不是大厂的专利。一台服务器挂三小时的损失,对小生意同样致命。这篇讲清楚 HA 的核心概念和个人/小团队负担得起的轻量方案——不堆 K8s,用备份、多实例和故障转移把可用性做上去。日常运维排查见服务器故障排查完全手册。一、先算一笔账:你需要的可用性是多少可用性年停机时间适合场景99%(两个 9)3.65 天个人项目、测试环境99.9%(三个 9)8.8 小时小团队业务、游戏服99.99[...]
2026-10-19 回复
[...]{"event": "payment.success", "order_id": "A10086"}配上"Basic Auth"节点校验,收到支付回调 → 查库 → 开通服务 → 发通知,全自动。安全红线:暴露的 Webhook 不带鉴权 = 谁都能往你工作流里灌数据。必须开鉴权(Header Auth / Basic[...]
2026-10-19 回复
[...]# 再加一个 woodpecker-agent 容器真正干活流水线文件 .woodpecker.yml 语法和 GitHub Actions 大同小异,会一个就会另一个。整套跑在 4核8G 的 NAT 型服务器上毫无压力——"吃配置不吃公网 IP",用 NAT 型比独立 IP 省一半以上。六、安全清单:CI/CD 是信任链自动化流水线是攻击者眼中的金矿——攻破它,你的每次部署都是它的后门:[ ] [...]
2026-10-19 回复
[...]sum(rate({job="nginx"} |= "error" [5m]))配套的 Nginx 日志分析技巧见Web 日志分析实战。五、看板与告警常用看板Grafana 里建三个面板就够日常:日志量总览:sum by (job) (rate({job=~".+"}[5m]))——哪个服务的日志在暴涨错误日志:{job=~".[...]
2026-10-19 回复
[...]# 3. 起服验证,公告玩家回档到几点回档是运营的必修课:提前告诉玩家"每日 4 点自动备份",出事时大家的心理预期是"丢一天"而不是"丢全部"。备份策略的完整设计见游戏服备份指南。事故 2:服务器卡顿玩家喊卡时的排查顺序:top 看 CPU 是否被打满(可能是玩家太多超配置)free -h 看内存,swap 在狂跳 = 内存不足mtr 看你自己到服务器的线路(也可能是玩家本地网络问题)游戏内延迟[...]
2026-10-19 回复
[...]netsh advfirewall firewall add rule name="GameRange" dir=in action=allow protocol=UDP localport=26901-26903完整的 Windows 环境准备(远程桌面连接、运行库安装、SteamCMD 用法、开机自启、8 个常见坑)见:《Windows 云服务器开服通用前置教程》→ htt[...]
2026-10-19 回复