【51CTO专稿】网站访问速度快慢直接影响公司和用户利益,其重要性不言而喻,本文中,58同城运维主管陆文举分享了近期在优化网站访问速度时积累的一些经验,希望给各位运维人员带来一些帮助。
(58同城运维主管 陆文举)
背景:随着业务快速增长,面对每天上亿PV的访问量,网站整体加载服务/程序越来越多,导致网站整体访问性能下降。
目标:优化网站访问速度,做到行业***!
在做网站访问速度优化之前,一定要对当前数据做一定分析,了解哪些元素、服务、业务影响当前网站整体速度,在后期优化过程中,可以一边优化一边与优化前数据做对比。在数据采集和分析方面,推荐使用基调、博睿这种第三方检测工具,这样可以保证数据真实可靠,还可以看到历史数据。具体的优化策略请看以下三个方面的介绍:
一、CDN至上
CDN原理在此不再累述。现在稍微有点规模的web站点,大多数都会使用CDN,有针对静态的,有针对动态的,还有针对视频流的;在CDN建设上也多种多样,有自建的,有第三方的(比如网宿、蓝讯)。优化过程中需要注意的问题如下:
- 静态资源尽量全部放入CDN,如jpg/png、js/css、swf
- 使用基调检测任务,检测是否有跨运营商访问情况
- 自定义脚本,实时检测各CDN节点是否出现time_out、50X错误
- 对比访问及源站access日志,提高缓存命中率
- 增加max-age时间
- 压缩静态资源
二、域名拆分
在域名使用上,也有很多值得注意的地方,我们针对自己的实际情况做了以下方面的改进:
1、使用独立域名,如网站为bj.58.com,那图片服务将使用58cdn.com.cn,这么做的好处是隔离cookie,减少了通信流量,提升了网站访问速度;
2、拆分域名,比如原download.58.com可以拆分成dl1.58cdn.com.cn-dl4.58cdn.com.cn四个域名。拆分多个域名的好处是突破IE低版本并发连接数限制。在域名拆分时并不是拆分的越多越好,因为随着域名增多,DNS请求时间和服务器建立连接时间都逐渐会增加,所以一定要紧密结合自身业务。
三、优化第三方服务
何为第三方服务呢?我是这么理解的,比如bj.58.com这个域名,它下面所有非bj.58.com开头的域名链接,都可以定义为第三方服务。如公司内部的其它系统、第三方公司的统计/广告系统等等。随着业务发展,接入的第三方服务越来越多,一个核心业务页面约100-200个元素中,有近五分之二的元素是第三方公司的,面对第三方服务,我们不能直接保障可用性,所以只能以监控、督促的手段来解决。所以我们把这一部分作为重点优化目标。下面举个真实发生过的例子给大家看看:
有一次接到客服反馈,北京某地产中介访问bj.58.com发布租房信息时打开网站出现卡死情况。因当时该用户无法使用IM工具,再加上用于在北京,我便直接去用户那了,到用户那通过Chrome的开发者工具加载网站时发现该页面调用了一个第三方链接,这个链接经常会出现访问超时、加载缓慢现象。后来回公司经确认,该链接为刚上线的某第三方热点统计工具,用于统计用户行为,由于我们网站访问量较大,第三方公司扛不住这么大访问量,所以频繁超时,导致用户访问我们的网站时出现卡死现象。所以,第三方服务可用性不容忽视。另外,我们针对第三方服务也做了一些优化和改进:
1、加强监测频率,在监测工具上,我们使用基调作为质量监测工具,数据真实可靠有保障。监测频率上由原两小时调整为每小时/每半小时监测一次;
2、导出基调原始监测数据,自定义定时分析,该数据中包含网页所有元素错误信息。导出数据后做出筛选及排序,选取监测任务中所错误率***的前30个URL,然后把这些错误URL定时发送到业务人员邮箱。
总结
其实,网站访问性能是一种意识,平时对网站上一切元素做变更的时候,多考虑一下这方面的问题能为网站性能带来直接的利益;如2010年团购、秒杀盛行时,某银行举办手机秒杀活动,更新时间时每秒都将整个页面刷新,这么做的后果不仅使网站访问速度变慢,***该网站也因不堪重负导致无法访问。
【作者简介】
姓名 | 陆文举(@陆文举) |
职位 | 58同城 运维主管 |
技术特长 | 大规模web运维 |
关注方向 | 运维自动化、可视化 |