网站访问过慢原因排查几点考虑

基于我们团队现在业务还在处于比较初期的阶段。访问量并不大,性能问题就成了一个重要但是不紧急的任务。

我而目前主要在发布、监控自动化、可视化。尽可能减少人为操作的问题上努力。

最近深圳那边同事说服务器有点问题,主要是网站访问缓慢,叫如果有空帮忙看看。

我09年左右就开始运营自己的小网站,可以说也是经历过很多这类问题的排查。

也遇过很多奇葩的问题导致网站访问过慢,甚至打不开的情况,但是从未记录下来。

所以,打算开一篇博文记录一下,一方面当做一种笔记,一方面也帮助自己理清一下整个流程。

是哪个环节导致的问题?

很多时候我们习惯访问一慢,就往服务器上看。看看是不是服务器出什么问题了。

其实,在访问网站的过程,任何一个环节都可能会出问题。

但是,最为常见的原因无非以下几种。

website slowness troubleshooting

往大来分类

自己电脑->网络运营商->DNS->主机服务商->服务器

而前面几个大多时候是我们不可控的。除了选择的时候 :D 但是,也得在我们考虑范围内,否则有时候可能白忙碌一场。

抛开不可控的因素,服务器上发生的所有一切才是我们最为关心的。

常见外在因素

1. 遭受攻击

这个问题,其实攻击都是有成本的,如果没有业务冲突,规模不大,很多时候是没人闲的蛋疼跑去攻击你。这个大多情况都是可以被排除的。

  • 常见攻击
    • DDoS、RDDoS 拒绝服务攻击
    • WebCC

这两个其实还是比较简单粗暴的。这个的防护,小规模的,现在很多大的云主机商多少都提供了这类的防护。节点少的,尽可能隐藏自己的源IP可以少很多麻烦

大规模的攻击,基本都是要上升到讨论成本的东西,软硬件防护,多节点,负载均衡等杂七杂八的,增加自己的成本,提高攻击者的攻击成本。

一些服务器上做的配置防护,在这类分布式多IP的大规模攻击下,效果微乎其微。

2.访问量过大

整个对于大多网站来说,是喜闻乐见的。不过这些访问,不单单包括自然访问,还有一些非自然访问量。

  • 自然访客
  • 搜索引擎/爬虫/采集器的蜘蛛 (一些网站被采集器爬到到整个网站访问缓慢也是挺常见的)
  • 一些无目的的攻击扫描等

常见内在因素

根据木桶原理,任何一个短板,都有可能导致整个服务流程出现缓慢。

1.基础服务-硬件

  • CPU
  • 内存
  • 网络IO
  • 硬盘IO

如果硬件到了瓶颈,那就该考虑,是不是该升级配置了?是不是该做CDN加速了?是不是该做负载均衡了?

如果排除前面提到的一些不可控和被攻击的问题,而硬件负载都很低,那基本问题就出现在服务和业务相关问题上了。

2.高级服务-软件服务

  • web服务 (Nginx/Apache/IIS等)
  • 数据库 (MySQL/Oracle/MSSQL/redis等)
  • 业务依赖的其它服务

服务的配置是否针对当前服务器的配置进行过针对性的优化?是否能发挥了当前硬件的潜能?

3.逻辑问题-业务问题

  • 代码效率问题 (比方算法,有些查询语句)
  • 业务逻辑问题 ( 比如优化资源访问方式,比如说分拆业务合并业务,减少请求数 )
  • 资源没有复用 ( 比方一些静态资源不缓存,一些连接没有复用,动态常用使用的资源不缓存 )

简而言之,哪个拖后腿整哪个。剩下的就是定位问题和解决问题,这也是最重要的部分。

先挖坑,以后再填。

关注公众号 尹安灿