排查第一步:确认是单机故障还是网络/域名层面问题,先从本地及第三方监控(如UptimeRobot、Pingdom)查看故障范围与开始时间。
使用ping/traceroute检查连通性,curl -I 查看HTTP响应头,检查是否出现 502/504 或无响应;登录控制台查看负载与网络接口状态。
若为服务进程崩溃,先重启相关进程(如nginx/apache、php-fpm、node),并切换到备用节点或负载均衡上的健康节点,短时间内恢复访问。
重启前查看错误日志(/var/log/nginx/error.log、应用日志),避免盲目重启覆盖诊断线索;必要时将流量切到CDN或临时静态页面降低影响。
定位热点:使用top/htop/iostat/iotop、free、vmstat 快速定位资源瓶颈,是CPU、内存还是磁盘I/O。
查看进程占用:ps aux --sort=-%cpu | head 或 ps aux --sort=-%mem | head,排查是否有异常脚本、爬虫或异步任务拉满资源。
临时限速或关闭占用进程,调整nginx/workers数量,开启PHP-FPM进程限制;如果是磁盘I/O,用只读挂载或停止备份任务缓解I/O。
针对站群应配置进程守护与自动化扩容策略(如自动添加实例或触发流量切换),并保证日志与监控报警实时触达运维人员。
检测解析情况:使用dig/nslookup检测国内外解析结果,核对A/CAA/CNAME记录是否与控制面板一致,检查TTL设置与生效时间。
确认是否为DNS污染(国内解析错误但国外正常)或域名被篡改(记录被修改)。检查域名注册信息、注册商控制台与DNS解析服务商历史记录。
若为记录被篡改,立刻恢复正确记录并将TTL调低,同时启用备用DNS或者将流量指向备用IP/负载均衡,必要时更换DNS服务商并启用DNSSEC。
在处理解析切换时注意TTL窗口,提前准备好应急解析方案和备用域名,防止切换期间出现更长的不可用时间。
确认封禁类型:通过不同网络(移动、联通、电信)和第三方端口扫描检查是否为全网封禁或单一运营商问题。
查看防火墙/iptables规则与安全组,检查CC/流量攻击日志,结合流量监控判断是否为攻击导致被上游ISP限制或主动屏蔽。
若是攻击,临时启用WAF、限流、连接数限制或将站点下线为验证码页面;如IP被封,快速切换到备用IP或通过CDN/反向代理隐藏真实IP。
及时与带宽/托管提供商沟通申诉,保留攻击流量样本用于溯源与申诉,同时在恢复后更换敏感服务端口和限制管理面板访问IP。
立即排查点:检查数据库进程状态(mysqld/postgres),连接数、慢查询、磁盘空间及主从同步延迟情况。
通过SHOW PROCESSLIST、SHOW SLAVE STATUS 或 pg_stat_activity 查看活跃连接与锁等待,查看错误日志判断是否为崩溃、表损坏或磁盘故障。
若为连接数爆满,先限流应用层、重启连接数异常的长连接;若为主库故障,执行主从切换或使用最近快照/备份回滚到可用节点,确保最小化数据不一致窗口。
在恢复过程中避免盲目导入旧备份覆盖最新数据,应先在从库或单独实例进行验证;恢复完成后进行完整一致性校验并补同步日志。