网站出现访问卡顿、白屏或接口报错,与其反复刷新浏览器或盲目重启服务,不如遵循从网络层、服务器层、应用层到数据库层的排查顺序。逐级筛查能有效缩小故障范围、缩短处理时间,避免在不相关的环节上浪费时间。
在动服务器之前,先分清问题是出在客户端网络还是域名解析。可以尝试切换到手机移动流量访问,或请异地同事打开同一个网址。如果换网后访问恢复正常,多半是本地网络环境问题;如果只有特定区域用户打不开,则可能是骨干链路波动或DNS解析节点尚未同步。
在命令行用 nslookup 或 dig 确认解析出的IP与服务器真实地址是否一致。解析结果为空或指向旧IP,通常说明A记录或CNAME被改动过,也可能是TTL过长导致新记录未生效。登录域名管理后台逐项比对记录,同时检查CDN回源配置。部分地区用户无法访问,往往是CDN节点缓存了源站旧信息,刷新CDN缓存即可解决。
有时 ping 正常但浏览器打不开页面,大概率是防火墙或安全组拦截了HTTP/HTTPS流量。使用云服务器需登录控制台,确认80和443端口已加入放行规则;用 telnet 服务器IP 443 测试端口连接,若提示超时或拒绝,问题多指向防火墙拦截或运营商端口限制,可尝试临时更换端口或联系网络服务商协助。
页面响应迟缓、请求频繁超时,往往意味着服务器资源逼近极限。CPU持续满载、可用内存紧张、磁盘空间告急、出站带宽被占满,都会让请求在队列中等待,最终表现为访问卡顿甚至中断。借助 top、free -h 和 df -h 查看系统实时状态,能迅速锁定资源瓶颈。
在 top 结果中按CPU占用率排序,审视靠前进程。常见场景包括:服务器被植入挖矿脚本、数据库慢查询堆积、爬虫程序缺少频率限制。结合Web访问日志,可确认哪些URL或来源IP带来异常流量。例如某接口被脚本每秒请求数十次导致PHP进程暴涨,日志中会留下该IP的清晰痕迹,封禁即可恢复。
磁盘使用率超过80%就应警惕。日志、临时目录或Session目录写满后,网站会因无法写入而报500错误,清理过期日志和缓存通常能快速解决。内存方面,若 free -h 显示Swap占用持续偏高,说明物理内存吃紧,系统正频繁交换数据,性能大幅下滑,需削减常驻进程或扩容内存。
白屏、部分功能失效这类问题,多半与应用代码或运行时环境相关。先查看应用日志(如 PHP 的 error_log、Java 的 catalina.out),确认是否出现致命错误、未捕获异常或依赖服务超时。开发环境难以复现时,开启详细日志记录并保留现场很关键。
应用日志中堆栈信息通常能直接定位到出错的函数或方法。检查近期是否部署过新版本代码,配置文件是否被误改,第三方API或Redis、消息队列等依赖是否仍可用。例如某商城页面报“连接Redis超时”,检查后发现是Redis密码变更未同步到配置,更新配置即恢复。排查时记得核对代码分支与线上版本是否一致,避免在错误的版本上查找问题。
PHP-FPM 的 max_children、Nginx 的 worker_processes 设置过小,在高并发时会导致大量请求排队最终超时。观察进程数量是否达到上限,结合请求日志统计QPS,再对照进程配置估算是否合理。如果长期存量不足,应调大并发数或引入负载均衡等横向扩展手段,这属于常见的容量规划问题。
多数慢接口和超时问题都能追溯到数据库层。先确认数据库服务是否存活、连接数是否打满,再看是否存在慢查询。用 show processlist 查看当前正在执行的SQL,通常能找到长时间未返回的语句,它们往往就是性能瓶颈的源头。
开启慢查询日志,收集执行时间超过设定阈值的SQL。对经常出现且耗时较长的业务查询,用 explain 分析执行计划,检查是否扫描大量行,是否已建立合适索引。一个常见例子是订单列表查询未给 status 字段加索引,数据量增长后从毫秒级退化为秒级,补上组合索引后恢复正常。注意避免过度加索引导致写入变慢,要平衡查询与写入场景。
数据库所在服务器的CPU、IO压力异常会造成全局性能下降,此时需要查看数据库监控面板区分是查询问题还是硬件瓶颈。应用连接池配置过小会在请求高峰期集体报连接超时,适当调大连接数并设置合理的最长等待时间可以缓解。另外,大表定期归档、清理历史冷数据也是维持数据库稳定性的常见维护手段。
重启只能治标不治本,适合临时止血,但不应作为首要手段。盲目重启可能掩盖真正原因,比如内存泄漏或死循环会再次触发。建议先抓取系统快照和日志,再决定是否重启,否则问题容易反复出现。
始终从网络层开始,因为它的验证成本最低——换网络、ping、telnet 很快就能确认。网络没问题再检查服务器资源,随后是应用日志,最后才查数据库,否则可能在“假应用问题”上绕圈,实际上只是防火墙拦掉了请求。
Linux 系统自带命令足够完成基础排查。用 top 看CPU和内存,df -h 和 iostat 看磁盘,sar 或 iftop 可查看历史负载与网络流量。这些工具能提供关键的数据支持,让你判断是IO、CPU还是网络导致性能下降。
网站故障排查讲究顺序和方法,一层层缩小范围比漫无目的地尝试更高效。遇到高耗时或高报错的系统,不妨提前整理一份排查清单,记下常用命令、日志路径和常见故障特征。平时多做资源水位与慢查询的例行检查,当故障真正到来时,你才能从容应对。