文档中心 故障排查 网站无法访问怎么办
在这篇文章中:

    网站无法访问怎么办?

    问题描述

    网站的访问与云主机的状态、端口通信、防火墙配置、安全组配置等多个环节相关联。任意一个环节出现问题,都会导致网站无法访问。本节操作介绍网站无法访问时的排查思路。

    排查思路

    如果打开网站有报错提示信息,首先应该根据报错提示信息,排查可能的原因。

    以下排查思路根据原因的出现概率进行排序,建议您从高频率原因往低频率原因排查,从而帮助您快速找到问题的原因。

    如果解决完某个可能原因仍未解决问题,请继续排查其他可能原因。

    可能原因 处理措施
    检查端口通信 检查Web端口是否正常监听,详细操作请参考检查端口通信问题
    检查安全组规则 检查安全组是否放通Web端口,详细操作请参考检查安全组规则
    检查防火墙配置 测试防火墙关闭后是否可以正常访问,详细操作请参考检查防火墙配置
    检查云主机路由配置 查看云主机路由表中网关信息配置是否正确,详细操作请参考检查云主机路由配置
    检查本地网络 更换手机热点或其他网络测试是否可以正常访问,详细操作请参考检查本地网络
    检查云主机CPU利用率 定位影响云主机CPU利用率高的进程并优化进程,详细操作请参考检查云主机CPU利用率
    检查域名解析(适用于域名访问的场景) 域名解析配置是否配置正确,详细操作请参考检查域名解析是否正常(使用域名无法访问时适用)

    检查端口通信问题

    确保服务进程和端口正常工作,处于LISTEN状态。表2为常见TCP状态。

    • Linux操作系统云服务器端口通信问题排查

      使用netstat -antp命令检查服务的状态,确认端口是否正常监听。

      例如:netstat -ntulp |grep 80

      • 如果端口被正常监听,请执行 检查安全组规则
      • 如果端口没有被正常监听,请检查Web服务进程是否启动或者正常配置。
    • Windows操作系统云服务器端口通信问题排查

      使用远程端口检测命令:

      1. 打开CMD命令行窗口。

      2. 执行netstat -ano | findstr “PID”命令查看进程使用的端口号。

        例如:netstat -ano | findstr “80”

        • 如果端口被正常监听,请执行 检查安全组规则
        • 如果端口没有被正常监听,请检查Web服务进程是否启动或者正常配置。

    表2 常见TCP状态

    TCP状态 说明 对应场景
    LISTEN 侦听来自远方的TCP端口的连接请求 正常TCP服务端
    ESTABLISHED 代表一个打开的连接 正常TCP连接
    TIME-WAIT 等待足够的时间以确保远程TCP接收到连接中断请求的确认 已关闭的TCP连接,一般1分钟后清除。
    CLOSE-WAIT 等待从本地用户发来的连接中断请求 应用程序BUG,没有关闭socket。出现在网络中断后。一般是进程死循环或等待其他条件。可以重启对应进程。
    FIN-WAIT-2 从远程TCP等待连接中断请求 网络中断过,需要12分钟左右自行恢复。
    SYN-SENT 再发送连接请求后等待匹配的连接请求 TCP连接请求失败。一般是服务端CPU占用率过高,处理不及时导致。DDos攻击也会出现此情况。
    FIN-WAIT-1 等待远程TCP连接中断请求,或先前的连接中断请求的确认 网络中断过,此状态可能不会自行修复(等15分钟以上确认),如果长期占用端口需要重启OS恢复。

    检查安全组规则

    如果安全组没有网站访问使用的端口,需要在云主机对应的安全组中添加放行该端口的规则。

    1. 登录云平台控制台。
    2. 选择“计算 > 云主机”。
    3. 在云主机列表,单击待变更安全组规则的云主机名称。
    4. 在打开的云主机详情页面最下方,查看该云主机对一个的安全组名称。
    5. 选择“安全 > 安全组”,进入安全组管理页面。
    6. 点击对应的安全组名称,查看安全组规则。
    7. 根据网站使用的端口配置更新安全组规则,放行网站使用的端口。

    检查防火墙配置

    • Linux操作系统云服务器,关闭防火墙后测试是否可以正常访问,如果可以正常访问,请添加放行Web服务规则:

      以CentOS 6.8操作系统80端口为例。

      1. 使用iptables -nvL –line-number命令查看已配置的防火墙策略。

      2. 依次执行以下命令放行80端口。

        iptables -A INPUT -p tcp –dport 80 -j ACCEPT

        iptables -A OUTPUT -p tcp –sport 80 -j ACCEPT

      3. 使用service iptables save命令保存添加的规则。

      4. 使用service iptables restart命令重启iptables。

      5. 使用iptables -nvL –line-number命令查看增加的规则是否生效。

    • Windows操作系统云服务器,关闭防火墙后测试是否可以正常访问。

      1. 登录Windows弹性云服务器。

      2. 单击桌面左下角的Windows图标,选择“控制面板 > Windows防火墙”。

      3. 单击“启用或关闭Windows防火墙”。

        查看并设置防火墙的具体状态:开启或关闭。

      4. 关闭防火墙后,重新测试网站访问是否正常。

    检查云服务器路由配置

    • Linux操作系统云服务器

      1. 使用route命令查看路由策略,确保0.0.0.0的默认路由指向网关,使用的IP和网关在相同网段,如下图第1行和第3行所示。

      2. 使用ifconfig或者ip addr命令查看实例的IP地址。

      3. 使用route -n命令通过路由表查看网关。

        图6 route -n命令查看网关

    • Windows操作系统云服务器

      1. 打开CMD命令行窗口。

      2. 执行ipconfig命令查看实例的IP地址。

        图7 ipconfig命令查看IP地址

      3. 执行route print命令通过路由表查看网关。

        图8 route print命令查看网关

    检查本地网络

    更换手机热点或其他网络测试是否可以访问网站。

    如果可以正常访问说明云主机的网络配置正常,请排除本地网络故障后重新测试访问网站。

    检查云主机CPU利用率

    云主机的带宽和CPU利用率过高可能导致网站无法访问。

    1. 定位影响云服务器带宽和CPU利用率高的进程。

      • Windows操作系统本身提供了较多工具可以定位问题,包括任务管理器、性能监视器(Performance Monitor)、资源监视器(Resource Monitor)、Process Explorer、Xperf (Windows server 2008 以后)和抓取系统Full Memory Dump检查。
      • Linux操作系统执行top命令查看当前系统的运行状态。
    2. 问题处理:排查进程是否正常,并分类进行处理。

      • 正常进程:优化程序,或变更云主机的配置
      • 异常进程:建议您手动关闭进程,您也可以借助第三方工具关闭进程。

    检查域名解析是否正常(使用域名无法访问时适用)

    完成上述的排查后,请使用云主机公网(浮动)IP进行访问。如果使用IP地址可以访问,但是域名访问失败,则可能是域名解析相关问题造成网站无法访问。

    关于域名问题请参考域名与网站服务