打开网站时遇到卡顿、白屏或接口报错,与其一遍遍刷新或反复重启服务,不如静下心来按固定顺序排查。通常顺着网络访问链路、服务器负载、应用日志和数据库配置一层层往下筛,多数问题都能在短时间内定位清楚,让服务恢复运行。
网站无法访问时,先不要怀疑服务器出问题。判断一下是不是访客本机网络或DNS解析没跟上。最直接的办法是换一台没访问过的设备,或者用手机流量测一次。若问题消失,多半是本地网络缓存或设备设置的问题;若只有特定地区或某运营商的用户打不开,则可能是链路中断或解析尚未同步。
在电脑命令行里执行ping 你的域名或nslookup 你的域名,核对返回的IP是否与服务器实际地址一致。解析出来的是旧IP或空结果,往往是A记录、CNAME设置不正确,也可能是刚改了解析还没全球生效。登录域名管理后台逐项比对即可,同时留意CDN是否把部分区域的流量引到了异常节点。
服务器IP能ping通但页面依旧打不开,通常和安全组或防火墙没放行HTTP、HTTPS端口有关。云平台需在控制台检查80和443端口是否开放,也可以执行telnet 服务器IP 80试试端口通不通。若连接超时或直接拒绝,重点检查防火墙策略和运营商侧是否有端口限制。
页面越来越慢、请求频繁超时,很大概率是服务器资源已经吃紧。CPU打满、内存不足、磁盘剩余空间为零或带宽被耗尽,都会导致新请求排队,表现就是页面迟钝甚至彻底无响应。通过SSH登录后,依次运行top、free -h、df -h,先看整体资源余量。
在top输出界面按CPU使用率排序,关注靠前的项目。常见的元凶包括被植入的挖矿程序、卡住的数据库查询,以及没有限制频率的爬虫。结合Nginx或Apache的访问日志,还能进一步确认是哪些URL或来源IP带来异常请求。比如某接口被脚本高频轮询导致PHP进程堆积,日志里的重复IP会很快暴露问题源头。
磁盘使用率超过80%就要重视了。日志或临时目录写满后,网站无法生成会话文件,直接返回500错误,清理过期日志和缓存往往立刻见效。内存方面,若free -h显示swap使用率长期偏高,说明物理内存吃紧,系统在内存和磁盘间不断切换,速度严重下滑。此时调整缓存策略或升级配置才是治本的路子。
页面白屏、某个功能不好使或报500错误,问题基本落在应用层。打开浏览器开发者工具的Network面板,先看请求的状态码:500是服务器内部错误,404是路由找不到,502或504则多与网关或超时有关。接着进入应用日志目录,比如Laravel的storage/logs或Spring Boot的logs文件夹,按时间倒序查看最近的堆栈信息,能直接定位到具体文件和代码行。
打开页面发现样式错乱或脚本不执行,先在Network面板里看静态资源是否加载成功。若JS、CSS文件返回404或加载超时,通常是静态资源路径有问题或CDN节点故障;若接口返回有数据但页面渲染不对,则重点检查前端代码。比如接口响应200但页面空白,一般就是JavaScript报错导致后续内容没渲染出来,Console面板里会给出明确提示。
登录页面迟迟转圈、提交数据没反应,很多时候瓶颈在数据库。先确认数据库服务是否正常运行,能否正常连接。使用SHOW PROCESSLIST;查看当前会话,若堆积大量Sleep或Waiting状态,多半是连接池耗尽或程序未关闭连接。数据库负载高时,用SHOW GLOBAL STATUS LIKE 'Threads_running';观察并发量,并开启慢查询日志找出耗时SQL。
慢查询日志里出现的SQL语句,通常是没有命中索引或查询量过大。用EXPLAIN查看执行计划,确认是否走全表扫描。合理的解决方式是给高频查询字段加索引,或调整业务逻辑减少多余查询。例如某个统计页面每刷新一次就全表扫描一次,数据量大时CPU必然飙升,改成缓存结果或定时汇总会流畅很多。
多为本机DNS缓存或浏览器缓存导致。尝试清空DNS缓存,或改用浏览器无痕模式访问。若问题仍在,检查本地代理或VPN设置是否干扰了正常访问。
能暂时缓解因内存泄漏、进程僵死引发的问题,但无法根治。若重启后故障很快复发,应深入排查是某个程序持续消耗资源,还是配置本身有缺陷,需要从源头修复。
先确认是否所有用户都受影响。若只有部分人异常,优先检查网络链路与DNS;若全部用户都打不开,直接跳到服务器负载和应用日志,通常能更快锁定方向。
网站异常并不可怕,怕的是毫无章法地乱试。记住这条路线:先看网络与解析,再查服务器资源,接着翻应用日志,最后检查数据库。每一步都有明确的判断依据和对应工具,顺着执行可以少走弯路。日常建议把常用排查命令和日志路径整理成文档,故障发生时能省下大量时间。