无法访问ECS实例中运行网站的快速排查方法

无法访问ECS实例中运行网站的快速排查方法

更新时间:2019-09-11 16:08:57

免责声明: 本文档可能包含第三方产品信息,该信息仅供参考。阿里云对第三方产品的性能、可靠性以及操作可能带来的潜在影响,不做任何暗示或其他形式的承诺。

 

概述

无法打开网站时,应该先搜索排查报错的含义,再排查80端口状态和排查Web服务状态。本文提供快速排查方法,更详细的排查过程请参考文档无法访问ECS上的网站

 

详细信息

本文提供Linux系统和Windows系统中运行的网站无法访问的排查思路。

 

无法访问Linux实例上运行的网站

此处以CentOS 7系统为例,请根据您的实际情况选择。

 

排查80端口不可用的情况

  1. 执行如下命令,查看TCP 80端口是否被监听。
    netstat -an | grep 80
    系统显示类似如下,如果返回以下任意一种结果,说明已启动TCP 80端口的Web服务。
    tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN # 全网监听
    tcp        0      0 127.0.0.1:80            0.0.0.0:*               LISTEN # 本机监听
    注:本机127.0.0.1监听会导致外网无法访问Web服务,只有本机能访问,需修改为全网监听。
  2. 如果第一步检查无异常,可执行以下操作。
    1. 查看实例安全组是否放行80端口,具体操作请参见添加安全组规则
    2. 查看实例iptables是否放行80端口。
    3. 使用telnet和traceroute命令跟踪80端口的连通情况,具体操作请参见能Ping通但端口不通时的端口可用性探测说明
  3. 查看云服务器带宽是否充足,具体操作请参见Windows实例系统负载的查询及分析

 

排查Web服务不可用情况

登录Liunx系统的ECS实例,具体登录方法请参见使用管理终端连接Linux实例

  1. 查看Web服务日志。
  2. 使用top命令查看实例运行状态,查看是否有异样进程。
  3. 在控制台查看实例监控信息,查看实例带宽是否充足,若不足,可尝试升级实例带宽。
  4. 查看实例CPU、内存是否不足,具体操作步骤请参见云服务器 ECS Linux 系统 CPU 占用率较高问题排查思路
  5. 查看实例的80端口是否有过多的TCP连接。
  6. 执行如下命令,统计TCP连接数。
    netstat -anp |grep tcp |wc -l
  7. 对比/etc/sysctl.conf配置文件中net.ipv4.tcp_max_tw_buckets参数的最大值,查看是否有超出情况。若超出,则执行以下操作。
    1. 执行vi /etc/sysctl.conf命令编辑文件,查询net.ipv4.tcp_max_tw_buckets参数。如果确认连接使用很高,容易超出限制,则根据现场情况,增加net.ipv4.tcp_max_tw_buckets参数值的大小。
    2. 执行sysctl -p命令,使配置生效。

 

无法访问Windows实例上运行的网站

此处以Windows Server 2008系统为例,请根据您的实际情况选择。

 

排查80端口不可用的情况

  1. 执行如下命令,查看TCP 80端口是否被监听。
    netstat -ano | findstr :80
    系统显示类似如下,如果返回以下任意一种结果,说明已启动TCP 80端口的Web服务。
    TCP    0.0.0.0:80           0.0.0.0:0              LISTENING       1172 # 表示全网监听
    TCP    127.0.0.1:80         0.0.0.0:0              LISTENING       1172 # 表示本地监听
    注:本机监听会导致外网无法访问Web服务只有本机能访问,可执行如下命令,修改为全网监听。
    netsh http delete iplisten ipaddress= 127.0.0.1:80
  2. 如果第一步检查无异常,可执行以下操作。
    1. 查看实例安全组是否放行80端口,具体操作请参考添加安全组规则
    2. 查看实例防火墙是否放行80端口,具体操作请参考Windows 防火墙限制端口/IP/应用访问的方法以及例外的配置
    3. 使用telnet和tracert命令跟踪80端口的连通情况,具体操作请参见能Ping通但端口不通时的端口可用性探测说明
  3. 查看云服务器带宽是否充足,具体操作请参见Windows 实例带宽和 CPU 跑满或跑高排查

 

排查Web服务不可用情况

  1. 登录Windows系统的ECS实例。
  2. 查看Web服务日志,如Windows Server 2008 IIS服务日志路径为“%SystemDrive%\inetpub\logs\LogFiles\W3SVC4”。
  3. 通过任务管理器查看实例运行状态,查看是否有异样进程。
  4. 在控制台查看实例监控信息,查看实例带宽是否充足,若不足,可尝试升级实例带宽。
  5. 查看实例的CPU、内存是否耗尽。请参见Windows 实例带宽和 CPU 跑满或跑高排查
  6. 参考如下步骤,查看实例80端口是否有过多的TCP链接。
    1. 依次执行以下命令,统计TCP连接数。
      netstat -n |find /i "time_wait" /c
      netstat -n |find /i "close_wait" /c
      netstat -n |find /i "established" /c
    2. 统计TCP连接数过高时,参考如下操作步骤,调整TcpTimedWaitDelay为30s,其默认值是4分钟(240s)。
      1. 打开 CMD,执行regedit命令。
      2. 选择 HKEY_LOCAL_MACHINE > SYSTEM > CurrentControlSet > Services > TCPIP > Parameters,根据如下情况进行设置。
        • 如果无TcpTimedWaitDelay项参数,则执行以下操作。
          1. 右键单击 Parameter > 新建  DWORD (32-位)值
          2. 输入TcpTimedWaitDelay,按回车键确认。
        • 如果存在TcpTimedWaitDelay项参数,右键单击 TcpTimedWaitDelay,单击 修改 ,勾选 十进制,数值数据输入30,单击 确定

 

相关文档

引发网站访问异常的相关因素及症状很多,如果您需要了解更多ECS实例中网站无法访问的原因,请参见访问ECS实例异常时的因素

 

适用于

  • 云服务器 ECS