网站无法访问的排查顺序,按这条链路几分钟定位问

📍 WDQWDWQD987AAAAA:216.73.217.38
📱 Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
🔗 /90ec224c384b.html
📄

网站加载不出或长时间转圈,反复刷新或是直接重启服务器往往解决不了实际问题。这类故障虽然看起来突然,但多数有固定规律可循,只要按照从外部访问链路到服务器内部状态的顺序逐层排查,通常很快就能找到真正的故障点。

1. 判断故障发生在哪一段链路

先不要急着登录服务器后台,第一步是区分问题出在客户端、网络线路还是服务器本身。最快速的办法是切换网络环境测试,比如关掉WiFi改用手机流量访问网站,如果秒开而换回宽带就卡住,基本可断定是本地网络、路由器缓存或DNS设置有干扰因素。

如果反馈异常的只有某些地区或特定运营商的用户,其他区域访问顺畅,那么问题多半与CDN节点状态或跨网线路波动有关,源站本身未必异常。反之,只有所有用户在所有网络条件下都无法访问时,才需要把重心转移到服务器一侧。

1.1 核对域名解析是否指向正确

在本地电脑打开命令行,输入 ping 你的域名 或 nslookup 你的域名,查看返回的IP地址是否与服务器实际IP一致。若解析结果还是变更前的旧IP,或者根本没有记录,说明A记录或CNAME设置有误,也可能是修改时间太短尚未全球同步生效。这时要去域名控制台逐条核对解析记录,并确认CDN面板里的源站IP和回源配置是否做了同步调整。

1.2 检查端口连通性与安全策略

解析正常、服务器也能ping通,但浏览器仍然打不开页面,就需要重点检测80和443端口。云服务器用户尤其要留意控制台安全组的入方向规则,确认已经放行HTTP与HTTPS端口。本地使用 telnet 服务器IP 80 测试,如果连接被拒或一直无响应,基本可以确定是云安全组规则、服务器防火墙或是运营商侧的访问限制拦截了请求。

2. 登录服务器查看资源消耗状况

网站一天比一天慢、大量请求超时,大概率是底层硬件资源已经触顶。CPU持续满载、内存严重不足、磁盘空间耗尽或带宽被占满,都会让新的请求排队等待,最终页面彻底无响应。通过SSH登入后,依次运行 top、free -h、df -h 三条命令,资源剩余情况一目了然。

2.1 定位占用资源的异常进程

在 top 输出里按CPU占用排序,观察靠前进程的名称和所属用户。常见的问题进程包括:被入侵后植入的挖矿程序、数据库慢查询或全表扫描,以及没有频率限制的爬虫脚本。结合查看Nginx或Apache访问日志能更准确判断,若发现某一IP对同一地址每秒请求数十次、日志量突然暴涨,基本可确认是脚本在刷接口,直接禁用该来源IP即可恢复。

2.2 防范磁盘占满与内存枯竭

磁盘使用率超过80%时就应引起重视,日志文件或临时目录把存储撑满后,程序无法写入会话或缓存文件,网站容易直接返回500错误。清理过期日志、无效备份和临时文件往往能快速见效。内存方面则需关注swap区使用情况,若 free -h 显示swap持续增长,说明物理内存已不够用,系统在频繁进行换页操作,速度自然会急剧下滑,必要时只能考虑升级配置。

3. 核查Web服务与业务进程状态

资源一切正常但页面依旧打不开时,就要检查服务进程是否还活着。常见的故障是服务进程崩溃或卡死,但系统本身没宕机,此时查看进程列表或用 systemctl status nginx 这类命令能快速确认服务运行状态。

3.1 检查服务监听与错误日志

先确认Nginx、Apache或应用服务是否在正常监听端口,使用 ss -lntp 查看监听情况,若80端口没有任何进程监听,说明服务已退出或未能启动成功。再查看错误日志,Nginx的error.log、PHP的php-fpm.log或是Java应用的控制台输出,都会记录崩溃时的具体原因,比如配置文件语法错误、扩展加载失败或数据库连接池耗尽。

3.2 留意数据库连接是否受限

Web服务正常但接口响应极慢,要留意数据库这边的连接数是否已经达到上限。尤其是使用MySQL时,show processlist; 可以快速查看当前连接数是否堆积,若大量连接处于Sleep或Waiting状态,说明连接未及时释放,导致新请求无法获取数据库资源,表现为页面长时间转圈或报连接超时错误,这种情况重启数据库通常临时有效,但根本解法是优化连接池配置或修复慢查询。

4. 其他容易忽略的隐蔽因素

按上述步骤仍找不到问题,还可能有几个容易被遗漏的点。网站SSL证书过期会导致HTTPS页面直接访问失败,而且浏览器会提示不安全连接;云服务商侧出现网络割接或设备故障,虽然概率低但确实存在,可以登录服务商状态页查看公告。另外,程序更新部署时遗留的旧进程、Swarm或Kubernetes容器调度异常,都可能导致请求路由到不健康的实例上。

4.1 留意本地浏览器缓存干扰

服务器一切正常、其他设备也能打开,只有某台电脑访问不了,通常是本地DNS缓存或浏览器缓存里存了旧记录。清除浏览器缓存、刷新本地DNS解析(Windows执行 ipconfig /flushdns)后重试,多数此类问题即可解决。

5. 常见问题

5.1 网站打不开是服务器问题还是网络问题

先切换网络访问,如果手机流量能打开而宽带打不开,多为本地网络或DNS问题;反之所有网络都无法访问,才需要检查服务器。另外可用第三方检测工具查询网站状态,确认是否是地域性故障。

5.2 服务器重启后网站还是打不开怎么办

重启后仍打不开,优先检查服务是否随系统启动,很多应用服务不会自动拉起,需要手动启动Nginx和PHP-FPM等。其次确认磁盘空间是否已满,重启无法释放空间。再检查云安全组和防火墙规则是否放行了对应端口。

5.3 网站间歇性打不开,时好时坏是什么原因

间歇性故障通常与资源占用波动(如定时任务触发CPU飙升)、数据库连接数周期性打满或带宽被突发的流量占满有关。建议在故障复现时立刻执行top和free查看当时资源情况,并查看访问日志中是否有规律性的异常请求。

6. 总结

网站无法访问时最忌盲目操作,正确思路是按外部链路、解析端口、服务器资源、服务状态、隐藏因素的顺序逐层过滤。日常养成定期查看资源占用和日志的习惯,在故障发生时保留现场数据,能显著缩短排查时间。若当天排查后仍无法定位,建议联系云服务商技术支持并附上测试记录与日志片段,通常能获得更快的协助。

图1 图2

nginx