说实话,比起网站打不开,网站访问慢更让人抓狂。
因为造成网站访问慢的因素太多了,一般用户根本无从下手!
任他千头万绪的问题,从以下三个方面入手,也能轻松破解访问慢的大难题 :响应时间、执行时间、加载时间
如下图所示,在访问过程中,绿色序号处最有可能影响访问速度
一、响应时间过长
1.dns解析慢 DNS解析缓慢在影响网站访问的因素中,只是小概率事件。相对来说,本地DNS故障比较常见。
排查方法:通过ping命令ping一个域名,如果几秒后未返回是否解析成功记录,那么就可判定为DNS解析缓慢。如下图:
解决方法:修改本机dns或联系本地网络运营商(电信、联通、移动)调整影响指数:★☆☆☆☆
2.建立链接慢
当我们获取到服务器IP后,客户端和服务器建立连接,这个链接的速度与质量取决于线路的优劣。最常见的问题就是跨线路访问,地理位置相差很远的访问,中继网络异常等。排查方法:如果ping一个网址,存在大量丢包或者很高延迟(国内ping延迟超过50ms),就会导致访问的连接线路异常。如下图:
如果网站禁ping了,推荐使用tcping测试端口(该命令所需软件需要下载,添加到系统环境变量中)
解决办法:可通过cdn加速,如果是线路短暂的不稳定,可等待线路调整,或尝试重启路由光猫,但不一定能能彻底解决。
影响指数:★★★☆☆
二、执行时间慢
1.服务器响应慢 当一个服务器健康运行,这个时间几乎可忽略,但是如果服务器不那么健康,比如CPU,内存,磁盘IOPS,带宽,只要一个达到瓶颈的服务器就是亚健康,将直接影响访问速度。排查方法:如果此前访问很快的网站访问突然变慢了,在网络无问题的情况下,云主机可查看内部资源使用情况(推荐使用zabbix等对各项资源做监控);虚拟主机则可通过执行简单命令或直接访问图片来判断服务器资源占用情况。
解决办法:对服务器资源进行升级影响指数:★★★★☆
2.程序执行排查难度略大,一旦出现将会严重影响访问速度。
排查方法:这需要程序员朋友亲自上阵调试了,常见于程序死循环,数据库死锁等。解决办法:调试程序,将动态页面静态化,如果是wordpress程序,可安装缓存插件,如wp super cache。影响指数:★★☆☆☆
3.数据库虽然大部分程序执行慢才是罪魁祸首,但因为数据库问题不常出现,并且具有很高的程序特异性,很容易被忽略。
排查方法:a、检查程序数据库连接字符串,最佳的方式是数据库与主机使用内网ip或者localhost连接,如果是公网,请务必确认是同机房!b、又要辛苦dba程序员朋友了,mysql建议开启慢日志或者通过数据库root帐号登录,使用show full processlist;获取到正在执行的查询语句,对其进行explain分析。
解决办法:
对于mysql,可通过建立索引,牺牲部分空间来换取时间。
对于sqlserver,可使用自带的活动监视器,可查看到cpu使用高以及耗时高的语句进行优化(如建立索引)。
另外,从硬件方面着手的话,升级SSD固态硬盘能解决该问题。影响指数:★★★☆☆
三、加载时间慢
加载时间慢可以说是最明显、最大程度影响访问速度的因素了。当用户访问一个网站时候,服务器会向客户端发送大量的内容,这会占用大量的服务器带宽。带宽就是最常见也是最直接影响打开的因素。很多朋友可能搞不太清楚带宽到底怎么算,这里科普一下,小编以一个10M(兆)带宽的服务器为例。带宽换算成我们平时最直观的速率,是有一个公式的,大约为:(带宽*1000)÷8
排查方法:当我们在任意浏览器打开网站后,按下键盘上的F12按键(隆重推荐),会出来如下图的一个 工具栏,一般在浏览器底部。如果这时切换到“Network”栏,可以勾选“Disable cache”或者按CTRL+F5 刷新页面,会将重新加载整个网页,并且不使用缓存。此时各个加载项就会一一展示在下方了。
我们可以清晰的看到每个文件的加载时间,如果有特别长时间加载不出来的就是有问题的。
加载的常见异常情况如下:
a、网站中的坏链:404地址,会导致持续加载不出(会在资源中以红色出现)
b、外链地址:调用的外部网站地址,加载外链很慢导致网站整体加载慢(非常常见,一般在time栏时间长达几秒的),比如一些网站调用了谷歌的字体,因为谷歌在国内打不开,导致网站一直加载不出字体。
c、大文件:很多站长直接将单反原图放在网站首页,会直接导致访问慢。
解决办法:
a、定期检查网站加载项,删除修复其中的坏链,外链建议修改成程序本地调用,减少加载项数量(截图中的requests项)
b、压缩网站首页大小,小编推荐首页越小越好,一般应该控制在3M内,这样能同时间承受更大的访问量,访问速度也更快
c、提升服务器带宽
影响指数:★★★★★