网站访问变慢、白屏或接口报错时,与其反复刷新甚至盲目重启服务,不如按从网络、服务器、应用到数据库的顺序逐层筛查。这样有步骤的排查思路能快速缩小范围,避免在不相关环节浪费时间。
动服务器之前,先判断问题出在客户端网络还是域名解析。可以换成手机流量访问,或请异地同事打开同一网址。若换网后正常,多半是本地网络问题;若仅特定地区用户打不开,可能是骨干链路波动或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、Node或Java应用各有错误日志路径。出现500错误时,日志会给出具体堆栈信息,重点看最后几条调用记录。常见原因如第三方接口超时未设置降级、内存溢出或数组越界。修复后建议在预发环境复现一次,确认问题不再出现。同时检查依赖库版本是否有已知漏洞或兼容性问题,升级时留意破坏性变更。
若接口偶尔超时,可能是某个外部调用延迟过高。查看请求耗时分布,找出最慢的环节。建议为外部API调用设置合理超时(如3-5秒),并增加重试机制。注意避免无限重试导致雪崩,可在网关层加熔断策略。
数据库慢查询或连接耗尽会直接拖垮网站。慢日志是首要线索。
开启数据库慢查询日志,找到执行时间超过阈值的SQL。常见问题是缺索引或查询条件导致全表扫描。用EXPLAIN查看执行计划,确认是否命中索引。例如某列表页每次请求都扫描百万行,加上复合索引后耗时从秒级降到毫秒级。定期清理无效索引也很有必要,减少写入开销。
连接数耗尽时,应用会报"too many connections"。检查连接池配置及是否有泄漏。同时观察是否有长事务持有锁,阻塞其他请求。通过SHOW PROCESSLIST查看当前会话状态,kill掉长时间空闲或卡住的连接。建议给数据库配置告警,连接数超过阈值时及时通知。
先检查服务器是否宕机或网络隔离。登录云控制台看实例状态,确认是否欠费或安全组策略变更。若服务器正常,再测试本地到服务器的路由,使用tracert或mtr定位丢包点。
多与负载均衡或缓存失效有关。后端多台服务器中某台异常时,请求会被轮询到问题节点。同时检查CDN或Redis缓存是否频繁过期,导致回源压力变大。建议查看各节点健康检查状态,并适当延长缓存时间。
先做好流量切换,把用户导向备用节点或静态页面,保证可用性。同时保留现场并抓包或dump内存,便于后续分析。复盘时用时间线整理操作记录,避免遗漏关键线索。
按网络、服务器、应用、数据库四层逐级排查,配合日志和监控工具,能大幅缩短故障恢复时间。建议日常就做好监控告警和巡检,记录典型故障处理步骤形成手册。下次遇到类似问题,按图索骥即可快速定位。