常见故障场景分析
把最常见的站点故障场景整理成标准排查路径,遇到问题不慌,按图索骥。
场景 1:网站完全打不开(ERR_NAME_NOT_RESOLVED)
症状:浏览器显示 DNS_PROBE_FINISHED_NXDOMAIN 或 ERR_NAME_NOT_RESOLVED
含义:DNS 解析失败——解析器找不到这个域名的记录。
排查步骤:
# 第一步:确认域名 DNS 记录是否存在
dig example.com A +short
# 如果没有输出 → DNS 记录不存在或 NS 配置错误
# 第二步:检查 NS 记录
dig example.com NS +short
# 应该返回你的 DNS 托管商的 NS
# 第三步:直接查权威服务器
dig @ns1.cloudflare.com example.com A +short
# 有结果但 dig @8.8.8.8 没结果 → NS 传播未完成
常见原因:
| 原因 | 判断方式 | 修复 |
|---|---|---|
| DNS 记录被误删 | dig example.com A 无结果 | 重新添加 A 记录 |
| NS 记录未生效 | 权威服务器有结果,Google DNS 没有 | 等待传播(最多 48 小时) |
| 域名过期 | WHOIS 查到到期时间已过 | 续费域名(在宽限期内) |
| 域名被注销/暂停 | 联系注册商确认 | 联系注册商解决 |
场景 2:部分地区打得开,部分打不开
症状:你自己能访问,但用户反馈打不开
排查步骤:
- 用 dnschecker.org 查询你的域名 A 记录
- 看哪些地区有结果,哪些没有
常见原因: - DNS 传播还没完成(刚改过 DNS) - 某些地区的 ISP 有 DNS 污染(尤其是中国大陆访问境外域名) - CDN 某个地区节点故障
针对中国大陆访问问题: - 如果需要中国大陆正常访问,需要备案 + 国内 CDN - Cloudflare 免费计划在中国大陆的速度较慢
场景 3:SSL 证书错误
| 错误信息 | 可能原因 | 排查方式 |
|---|---|---|
NET::ERR_CERT_DATE_INVALID | 证书过期 | openssl s_client 查有效期 |
NET::ERR_CERT_COMMON_NAME_INVALID | 证书域名不匹配 | 确认证书覆盖的域名 |
NET::ERR_CERT_AUTHORITY_INVALID | CA 不受信任/自签名 | 换用 Let's Encrypt 或 Cloudflare SSL |
ERR_SSL_PROTOCOL_ERROR | SSL 握手失败 | 检查服务器 SSL 配置 |
| 锁头有警告 | 混合内容 | Chrome DevTools Console 查看 |
# 快速检查证书
echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null | openssl x509 -noout -dates -issuer
# 用 SSL Labs 全面测试
# https://www.ssllabs.com/ssltest/analyze.html?d=example.com
场景 4:邮件被退回(Bounce)
退信原因分类:
| 退信类型 | 说明 | 处理方式 |
|---|---|---|
| 硬退信(Hard Bounce) | 地址不存在、域名不存在 | 从列表永久删除该地址 |
| 软退信(Soft Bounce) | 收件箱满、临时问题 | 等待后重试,超过 3 次删除 |
| 被拒绝(Rejected) | SPF/DKIM/DMARC 验证失败 | 检查邮件认证配置 |
| IP 黑名单 | 发件 IP 在黑名单 | 检查并申请移除黑名单 |
# 查看 MX 记录是否正确
dig example.com MX
# 用 MXToolbox 检查邮件配置
# https://mxtoolbox.com/SuperTool.aspx?action=mx%3aexample.com
场景 5:网站变慢(响应时间突然增加)
分层诊断:
graph TD
A[网站变慢] --> B{DNS 解析慢?}
B -->|是| C[检查 TTL 过短
检查权威 DNS 服务器响应] B -->|否| D{网络连接慢?} D -->|是| E[CDN 是否有效?
服务器地理位置?] D -->|否| F{服务器处理慢?} F -->|是| G[CPU/内存/数据库查询] F -->|否| H{资源加载慢?} H -->|是| I[图片未压缩
缓存未配置]
检查权威 DNS 服务器响应] B -->|否| D{网络连接慢?} D -->|是| E[CDN 是否有效?
服务器地理位置?] D -->|否| F{服务器处理慢?} F -->|是| G[CPU/内存/数据库查询] F -->|否| H{资源加载慢?} H -->|是| I[图片未压缩
缓存未配置]
# 测量各层延迟
curl -s -o /dev/null -w "
namelookup: %{time_namelookup}s
connect: %{time_connect}s
appconnect: %{time_appconnect}s
pretransfer: %{time_pretransfer}s
starttransfer: %{time_starttransfer}s
total: %{time_total}s
" https://example.com
判断标准:
- namelookup > 0.1s → DNS 解析慢(考虑降低 TTL 或换 DNS 提供商)
- connect > 0.3s → 服务器地理距离远(考虑 CDN)
- starttransfer > 1s → 服务器处理慢(应用层问题)
场景 6:改了 DNS 但 Cloudflare 显示未激活
症状:在注册商改了 NS 指向 Cloudflare,但 Cloudflare 后台仍显示 "Pending"
排查:
# 检查 NS 是否已传播
dig example.com NS +short
# 应该返回 ns1.cloudflare.com 和 ns2.cloudflare.com
# 如果还是注册商的 NS → 传播未完成,继续等待
# 如果已是 Cloudflare NS → Cloudflare 需要重新检测
解决:Cloudflare 后台 → 检查 DNS → 点击 "Re-check" 或等待自动检测(最多 24 小时)。
下一节:故障排查流程图——系统化定位问题的思维框架。