线上业务出现白屏、接口响应超时或页面卡顿时,一味刷新或反复重启服务往往解决不了根本问题。高效的排查思路是沿着用户请求的路径,从网络接入层开始,逐层向服务器资源、应用进程和数据库配置推进。掌握合理的排查顺序,能够有效缩短故障修复时间,尽快恢复业务。
网站无法打开时,先别急着登录服务器,第一步应判断故障发生在用户端还是服务端。最简单的办法是切换网络,例如用手机流量访问测试。如果恢复正常,通常是本地路由器缓存或设备设置导致;若只有特定城市或运营商的用户打不开页面,则要重点检查解析记录是否有地区延迟或链路拥塞。
在本地命令行执行nslookup 你的域名,查看解析出的 IP 是否与服务器真实公网地址匹配。如果解析结果为空或指向旧地址,基本可以确定是控制台的 A 记录或 CNAME 配置有误。需要注意,修改解析配置后到全球生效需要一定时间,短则几分钟,长则几小时。同时也要留意 CDN 节点是否异常,避免回源请求在部分地区反复失败。
服务器可以 ping 通但网页打不开,多半是端口没有对外开放。云服务商的安全组和服务器自带的防火墙规则必须同时放行 80 和 443 端口。在本地执行telnet 服务器IP 443,若提示超时,基本能判断是防火墙拦截或运营商限制。此时先确认安全组入站规则,再检查 iptables 等本地策略。
页面加载缓慢、请求排队超时,通常和服务器资源耗尽有关。CPU 满载、内存不足、磁盘剩余空间过低或带宽被占满,都会导致在线服务响应迟缓。登录服务器后,依次运行top查看负载与 CPU、free -h检查内存、df -h查看磁盘用量,这些命令可以快速掌握系统健康度。
在top输出界面按 P 键按 CPU 占用率排序,仔细核对靠前的进程。常见异常包括:被植入的挖矿程序、缺失索引导致的慢查询堆积,以及恶意爬虫的高频访问。交叉查看 Nginx 或 Apache 的访问日志,可以确认这些请求的来源 IP 和 URL 特征。例如,某个接口每秒被调用数百次,可以通过限制请求频率或临时封禁来源 IP 来缓解压力。
磁盘使用率一旦超过 80% 就应引起重视。会话文件、运行日志或临时目录写满后,程序无法正常创建缓存,往往直接返回 500 错误。及时清理过期日志和临时文件,通常能快速释放空间。内存方面,若free -h显示 swap 读写频繁,说明物理内存严重不足,系统在内存与磁盘之间频繁换页,整体性能会骤降。此时应优先优化应用的内存占用,必要时再考虑升配。
网络和资源层都没问题时,故障根源多半在应用本身。页面白屏、个别功能不可用或接口返回 5xx,都需要结合日志定位。查看 Nginx 错误日志和应用运行日志,重点关注堆栈报错和异常退出记录,明确是否有代码层面的逻辑错误。
执行systemctl status 服务名或ps -ef | grep 服务名,确认应用进程是否正常运行。如果进程频繁退出,检查服务的启动脚本和日志中的崩溃原因。有些服务在内存不足时被系统 OOM Killer 强制终止,此时需要查看系统日志中是否有相关记录。
当页面能打开但接口报错时,可用 curl 直接测试后端接口,观察返回状态码和响应时间。同时确认所依赖的组件,如 Redis、消息队列或对象存储是否可用。例如,缓存服务连接超时,会导致接口响应缓慢但页面静态部分正常显示。
应用日志正常但部分功能异常,例如登录超时或列表加载失败,问题可能出在数据库层。数据库连接数打满、慢查询过多或存在锁等待,都会直接影响接口响应。
登录数据库执行show processlist;查看当前连接情况,若连接数接近上限且大量处于 Sleep 状态,说明连接池配置过小或存在连接泄漏。结合代码检查连接使用和释放逻辑,避免连接长期占用。
开启慢查询日志,找出执行时间较长的 SQL 语句,检查是否缺少索引或扫描行数过多。同时查看是否存在锁竞争,尤其是数据更新频繁的表。通过添加合适索引或改写查询逻辑,通常能显著改善数据库响应速度。
这通常是本地问题,常见原因是浏览器缓存了旧的 DNS 记录或代理设置异常。尝试清除浏览器缓存、刷新本地 DNS(Windows 执行 ipconfig /flushdns),或更换浏览器验证。
重启只是暂时缓解了资源问题,并未消除根因。应重点查看系统启动日志和应用日志,确认是否有服务未随系统自启,或依赖的数据库、缓存服务未正常启动。
502 通常表示后端应用进程未运行或端口监听异常,检查应用服务和 FastCGI 配置;504 一般是后端处理超时,关注应用日志中的慢请求和数据库慢查询,适当调整 Nginx 的超时时间。
网站故障排查应遵循从外到内的顺序:先确认网络和解析,再看资源占用,然后深入应用日志,最后核查数据库状态。每一步都结合日志和监控数据分析,避免盲目操作。建议日常做好监控告警和日志归档,在故障发生时能快速定位到具体环节,缩短业务中断时间。