作为技术人员,如果问我最怕排查哪类网站问题,不是网站打不开,而是打开慢。因为打开慢的原因实在太多了,并且可能无法彻底解决,不过我们可以通过一系列的排查来推测出网站打开慢的原因。
在长期的工作实践中,小编总结出以下一些常见的网站打开慢的问题,以及排查方式。
首先将网站的访问过程分为三部分,以及一些细类
1、响应时间
(1)dns解析域名 (2)连接建立
2、执行时间
(1)服务器响应 (2)程序代码执行 (3)数据库连接和查询语句
3、加载时间
(1)图片,js,css,视频等的加载 (2)站外链接加载
小编做了一张流程图来展示访问的各个阶段情况,其中最可能影响打开速度的部分用了绿色标签标注
1、响应时间
(1)dns解析域名
结合我们之前介绍的ping命令,如果有一天,你ping一个域名然后过了几秒dns才返回出结果,这就会导致打开速度在一开始就延迟一大块,小编这里修改了本机dns为一个遥远的国外dns,然后随便ping了一个地址,类似下图这种半天都没有返回是否解析成功的,就是dns的解析很慢。
总结:结合实际生产环境,这个问题只是可能存在,但是很小几率会因为这个问题影响网站的访问速度。是几乎可以忽略的一项指标。最为常见的情况就是本地dns出问题了。
解决方法:修改本机dns或联系本地网络运营商(电信、联通、移动)调整
影响指数:★☆☆☆☆ 1星
(2)建立链接
这个环节就大有问题了,当我们获取到服务器IP后,客户端和服务器建立连接,这个链接的速度与质量取决于线路的优劣。最常见的问题就是跨线路访问,地理位置相差很远的访问,中继网络异常等。排查方法:依然是经典的ping
如果ping一个网址,存在大量丢包或者很高延迟,就会导致访问的连接线路异常,比如我们随便找了一个海外网站,类似这种高延迟+丢包的情况。打开怎么能不慢呢。推荐命令:ping 域名 -t(-t表示一直ping下去)一般国内的ping延迟在50ms以内都正常,国内ping美国,好的情况180ms,差的220ms以上
上次有网友留言,要是网站禁ping了怎么办?问的很好,这里小编推荐使用tcping测试端口(该命令所需软件需要下载,添加到系统环境变量中)
总结:一个非常常见的访问慢原因,并且很难从根本解决,最常见的就是国内访问美国线路,香港线路,移动网络访问电信线路。与访客和服务器的地理位置有关系。
解决办法:很难解决,可通过cdn加速,如果是线路短暂的不稳定,可等待线路调整,或尝试重启路由光猫,但是不一定有效
影响指数:★★★☆☆ 3星
2、执行时间
(1)服务器响应
当一个服务器健康运行,这个时间几乎可忽略,但是如果服务器不那么健康,咳咳.. 小编这里的健康是指服务器内的资源使用情况,CPU,内存,磁盘IOPS,带宽,只要一个达到瓶颈的服务器就是亚健康,将直接影响访问速度。
排查方法:
在确保网络无问题的情况下,云主机可以查看内部资源使用(推荐使用zabbix等对各项资源做监控),虚拟主机则可以执行一些简单的命令,或者直接访问网站的图片,如果打开很慢,则需要检查服务器资源使用。
总结:一个最直接的访问慢问题,如果一直很快的网站,突然慢了,则应该首先检查该问题!
影响指数:★★★★☆ 4星
(2)程序执行
一个说大不大,说小不小的问题,一旦发生,将会导致打开很慢,常见于程序死循环,数据库死锁等,这里发一个工作中遇到的笑话,懂得程序员朋友就懂了
排查方法:这还真不好排查,要辛苦各位程序员朋友调试了。常见的比如wordpress程序,执行就很慢,推荐可安装缓存插件如wp super cache或者wp fast cache,将动态页面静态化。
总结:一个难以排查的问题,一旦出现会严重影响访问速度,不过平时遇到的不是很多
影响指数:★★☆☆☆ 2星
(3)数据库
其实也应该归类到程序里,但是这里小编单独拿出来讲一下,因为经常遇到,并且这类问题很隐晦,不好排查。最常见的问题有两个,一是程序连接了外部数据库(比如数据库和网站代码不在一个机房),二是查询语句执行很慢(比如一次性读取过多的数据)
排查方法:
a、检查程序数据库连接字符串,最佳的方式是数据库与主机使用内网ip或者localhost连接,如果是公网,请务必确认是同机房!
b、又要辛苦dba程序员朋友了,mysql建议开启慢日志或者通过数据库root帐号登录,使用show full proceSSList;获取到正在执行的查询语句,对其进行explain分析
比如这种单个查询的rows(行数)达到20万行的语句,能不慢吗?优化方式是建立索引,牺牲空间换时间。
对于sqlserver,可使用自带的活动监视器,可查看到cpu使用高以及耗时高的语句进行优化,方式和mysql类似
总结:一个容易被忽视的问题,小编认为是大部分程序执行慢的罪魁祸首,但是因为不常出现,并且具有很高的程序特异性,所以不会特别典型,姑且算3星,从硬件上提升的话建议升级SSD固态硬盘,对该问题有较大帮助。
影响指数:★★★☆☆ 3星
3、加载时间
终于说到这里了(呼),这就是小编认为最大的一个访问慢的因素。当用户访问一个网站时候,服务器会向客户端发送大量的内容,这会占用大量的服务器带宽。带宽就是最常见也是最直接影响打开的因素。
很多朋友可能搞不太清楚带宽到底怎么算,这里科普一下,小编以一个10M(兆)带宽的服务器为例
带宽换算成我们平时最直观的速率,是有一个公式的,大约为:
(带宽*1000)÷8
比如10M的带宽转换成速率就是10M*1000 / 8=1.25 m/s
再比如5M的带宽转换成速率就是5M*1000 / 8=625 kb/s
有兴趣的朋友可以查资料了解下为什么需要除以8,这一点大家结合家庭带宽表现能明白了。服务器的带宽,也是一样的。
了解上述知识后,我们隆重介绍排查网站加载速度的第一工具,F12,没错就是键盘上的F12按键!
排查方式:当我们在任意浏览器打开网站后,按下键盘上的F12按键,会出来如下图的一个 工具栏,一般在浏览器底部
这时候切换到“Network”栏,可以勾选“Disable cache”或者按CTRL+F5 刷新页面,会将重新加载整个网页,并且不使用缓存。这时候各个加载项就会一一展示在下方了
我们可以清晰的看到每个文件的加载时间,如果有特别长时间加载不出来的就是有问题的,另外下面会列出总的网页大小和请求资源数量,比如优快云官网首次打开是2.8M的大小,小编本地的带宽是100M,那么理论访问速度就是2.8M除以1.25M/s=2.24s,大概符合我们测试结果2.06秒。注意当服务器带宽低于本地带宽时候。就要以网页大小除以服务器带宽速率。比如我的服务器带宽只有3M(速率375kb/s),那么要加载完这2.8M就需2.8*1024/375约为7.6秒。
加载的常见异常情况如下:
a、网站中的坏链:404地址,会导致持续加载不出(会在资源中以红色出现)
b、外链地址:调用的外部网站地址,加载外链很慢导致网站整体加载慢(非常常见,一般在time栏时间长达几秒的),比如一些网站调用了谷歌的字体,因为谷歌在国内打不开,导致网站一直加载不出字体。
c、大文件:很多站长直接将单反原图放在网站首页,哇,哪一张就是10几M,这加载速度..不提了,建议优化图片大小!单张图片不建议超过200kb。
总结:一个最明显,最大影响访问速度的因素,可以比较直接的说带宽越高访问速度越快。优化建议:
a、定期检查网站加载项,删除修复其中的坏链,外链建议修改成程序本地调用,减少加载项数量(截图中的requests项)
b、压缩网站首页大小,小编推荐首页越小越好,一般应该控制在3M内,这样能同时间承受更大的访问量,访问速度也更快
c、提升服务器带宽(我司虚拟主机单台服务器带宽可都是1000M的哦)
影响指数:★★★★★ 5星
原创文章,转载请注明来源!
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-62778877-8261;邮箱:jenny@youkuaiyun.com。本站原创内容未经允许不得转载,或转载时需注明出处::优快云资讯门户 » 网站访问慢的分析流程