网站出现卡顿、白屏或接口持续报错时,与其反复刷新或重启服务,不如按照网络链路、服务器资源、应用代码再到数据存储的顺序逐层排查。这种自外而内的定位逻辑,能帮你快速缩小故障范围,把精力花在真正出问题的环节上。
遇到访问异常,先别急着碰服务器,而是确认问题出在客户端网络还是解析环节。你可以试着用手机流量访问,或者请异地同事打开同一个网址。如果换网络后恢复正常,多半是本机网络问题;如果只有某些地区打不开,则要考虑骨干网波动或解析记录未同步。
在命令行执行nslookup或dig,查看域名解析出的IP是否与服务器实际地址一致。解析为空或指向旧地址,通常是因为A记录、CNAME记录被误改,或者TTL设得太长导致缓存未刷新。登录域名控制台逐条核对记录,同时检查CDN的回源地址是否有误。某些区域访问异常,很多时候是CDN边缘节点还存着过期的源站内容。
有时候ping能通,但浏览器就是打不开页面,这多半是防火墙或安全组拦截了HTTP/HTTPS流量。云服务器用户需要到控制台确认80和443端口已放行;用telnet 服务器IP 443测试连通性,如果提示超时或被拒绝,问题基本指向防火墙规则或运营商端口限制。此时可以临时换一个端口验证,或者联系网络服务商确认。
页面响应变慢、请求频繁超时,往往是服务器资源被耗尽。CPU长期满载、内存不足、磁盘写满或者出网带宽被打满,都会让请求排队,最终表现为卡顿甚至短暂抽风。用top、free -h和df -h三条命令看一眼系统实时余量,就能快速判断瓶颈在哪个维度。
在top输出里按CPU使用率排序,重点观察前几个进程的身份。常见情况包括被入侵后植入的挖矿程序、数据库慢查询堆积、以及没有频率限制的爬虫在疯狂抓取。拿Web访问日志对照一下,能确认哪些URL或来源IP引发了异常流量。比如某个接口被外部脚本每秒刷几十次,导致进程数暴涨,日志里会清楚留下该IP的痕迹,直接在防火墙封掉就能快速止血。
磁盘使用率超过80%就该警惕了。日志、临时目录或Session文件把分区写满后,网站因为无法落盘数据会抛500错误,清理过期日志和缓存通常马上见效。内存方面,如果free -h显示Swap长期有占用,说明物理内存吃紧。系统在内存与磁盘间来回换页,性能会大幅缩水,这时候需要精简常驻进程或者考虑升级内存。
白屏、某些功能失效或者直接返回500,大概率出在应用代码里。打开浏览器开发者工具的Network面板,先看关键请求的状态码:500是进程内部抛异常,404是路由或文件找不到,403则是权限不够或IP被拉黑。紧接着去翻应用自身的运行日志,PHP的error_log、Java的catalina.out或者Node的pm2日志,都会记录具体的报错堆栈。
拿到报错信息后,按堆栈中的文件和行号去核对最近一次版本上线。排查时先确认是否是引入的新功能或依赖导致的回归问题,如果是,优先回滚最近一次变更。若报错指向数据库连接失败,则要回头检查数据库服务的运行状态,而不是在代码层面反复纠结。
应用正常但部分页面或功能异常,还要排查所依赖的外部服务。比如第三方支付回调、短信接口或对象存储服务偶尔抖动,都会让业务出现局部不可用。查看调用链日志中外部请求的耗时和返回码,能清晰判断是偶发超时还是持续不可达。对于关键依赖,建议做好超时和降级处理,避免单点故障拖垮整个应用。
网站能打开但登录状态频繁丢失、列表加载极慢或写入报错,问题通常沉淀在数据库和缓存层。MySQL查询变慢、Redis连接数被打满或者缓存穿透,都会直接反映为接口响应时间急剧上升。
进入数据库执行show processlist;查看当前会话,重点关注长时间为Sleep或Query状态的连接。再开启慢查询日志,定位执行时间超过1秒的SQL语句,常见原因包括缺失索引、查询条件没走索引或一次关联了过多数据表。如果连接数接近上限,需要检查应用是否未正确释放连接,或者峰值流量超过了实例规格。
查看Redis的监控指标,关注命中率是否骤降、已用内存是否接近上限。缓存出现穿透时,大量请求直接打到数据库,往往是因为热点key过期时间设置不一致。建议为热点数据设置随机的过期时间,并对不存在的数据也做短暂缓存,防止恶意请求绕过缓存压垮数据库。同时留意是否有大key或慢命令在阻塞Redis线程。
优先排查网络连通性和域名解析。先用手机流量访问,看是否本机问题;再确认解析的IP是否指向正确服务器,之后测试80或443端口是否放行。这一步不出问题,再进入服务器看资源消耗。
这种情形多半是慢SQL或外部依赖抖动导致。开启数据库慢查询日志,确认是否有特定时间点的慢语句;同时检查调用第三方服务的耗时分布,看看是否请求阻塞在线程等待上。必要时对慢接口增加超时熔断机制。
磁盘没满但写入失败,通常是inode耗尽或目录权限不对。执行df -i查看inode剩余数,如果为0,删除大量小块临时文件即可;再确认Web目录属主是否为运行用户,权限设置是否正确。
网站故障排查不必手忙脚乱,按网络链路、服务器资源、应用日志、数据存储的顺序推进,每层都有对应的验证方式。建议平时就把关键命令和日志路径保存成一份速查表,遇到异常时能直接对照执行,减少盲猜的时间。每一次故障处理完,把根因和解决步骤记录下来,逐步形成适合自己团队的排查手册。