你是否遇到过下面这些问题?
访问站点时,报“无法访问此网站”的错误,没有错误状态码?
网站忽然无法访问,出现异常代码4XX?
网站访问非常缓慢,猜测是数据库连接数问题?
网站无法访问的原因多种多样甚至花里胡哨,那如何排查到问题的原因并解决呢?我们一起来看看吧~
一些网站无法访问的常见原因和通用排查思路
(PS:本文针对云服务器网络无法访问,云下思路也可以借鉴)
场景一:无错误状态码
排查思路:
无错误状态码,多数情况下是“ERR_CONNECTION_TIMED_OUT”问题。
出现ERR_CONNECTION_TIMED_OUT错误原因,可以总结为以下5点:
- 服务器带宽跑满、存在攻击
- 若是云服务器可能存在账号处于欠费状态
- 服务没有启动
- 端口没有正常监听
- 防火墙或者防火墙策略限制
排查思路说明:
1、使用命令telnet IP Port 进行测试
2、如果端口是通的,则排查
- 查看服务器带宽是否跑满、是否有攻击
- 是否使用的账号处于欠费状态
3、如果端口不通,则排查
- web服务没有正常启动
- 端口没有正常监听
- 防火墙/安全组拦截
解决方案:
1、若是web服务没有正常启动,需要启动服务
- 使用netstat -tpln命令查看web服务(apache、nginx、tomcat等)的端口是否正常监听。
2、若是端口没有正常监听,需要修改配置文件
- 使用netstat -tpln命令查看web服务的端口是否正常监听。不是监听在0.0.0.0上。
3、若是防火墙拦截,需要关闭防火墙进行测试,或者找到相关限制规则进行修改。
- iptables -L查看防火墙规则
场景二:网站访问异常代码4XX。
排查思路:
- 通过查看其配置文件,并检测其配置文件语法,发现语法正常;
- 通过命令行查看其web服务端口运行正常,没有进程僵尸状况;
- 具体读配置文件,然后再查找客户客户配置文件所指定的具体目录;例如:网站数据目录等(本案例是客户机器迁移之后,由于阿里磁盘的特性导致盘符改变,客户的数据盘挂载不上,etcfstab和盘符不匹配)
- 问题定位到之后,重新以正确的方式挂载客户网站数据;重启服务,问题得以圆满解决;
- 基于类似问题还可以关注下目录权限等问题。
经验汇总:
针对网站访问报错问题几点排查建议:
- 服务器配置文件权限,以及语法的正确性;
- 配置文件中指定的网站相关目录存在问题,及相关权限问题;
- 运行web服务的用户和相关权限问题;
- 防火墙的设置问题,导致服务不可达;
- 服务器服务进程僵死问题;
- 配置文件中的非法字符问题;(特别是从windows平台直接cp过来的配置文件容易报错)这样的问题较难排查,可以通过type 命令或者 file 命令查看文件类型;最好是二进制格式或者 ascii 码,linux平台可以安装 dos2unix 解决;
- 服务器的错误日志亦是非常关键的问题突破口;
案例:报错“404 Not Found”
问题原因:
404报错的具体原因是访问的路径url目录在服务上没有找到,如果直接使用ip或者域名访问,那么实际访问的页面是站点根目录下的默认文件(配置文件中index后指定的文件),如果服务器上站点根目录上没有这个文件,则会出现404错误。
排查步骤:
测试环境:Nginx环境
如下图所示,站点跟目录/www/下没有默认index.html文件,访问http://IP/index.html时,会报404 Not Found错误。
备注:Apache环境下,404错误也是同样的原理进行排查。
场景三:网站访问非常缓慢
排查思路:
内容不全,后续会持续补充,欢迎大家关注~