腾讯大讲堂17-性能优化不是仅局限于后台(Qzone)

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

性能优化不是仅局限于后台----Qzone性能优化报告QQ空间产品中心QwangQzone优化概述存储优化日志重构访问优化接入层逻辑层表现层日志重构前问题分析数据量增长过快总数据量9T日增长量约20G扩容需进行大量数据搬迁Cache命中率低(50%),DB压力大旧系统结构模块日志回复日志标题日志计数优点CACHE内存化,提升性能多进程号段分布处理业务异步化缺点CACHE量有限,命中率低,对DB的性能依赖比较重模块相互独立,容易造成数据不一致CGI接入共享内存CACHE处理DB接口DB接入共享内存CACHE处理DB接口DB接入共享内存CACHE处理DB接口DB日志标题日志回复日志计数Qzone数据层优化(日志重构)与产品经理的Trade-off区分近期日志与往期日志区分活跃数据、非活跃数据和历史归档数据二级缓存(内存+文件)针对单个号码进行路由新系统结构CGI接入共享内存CACHE处理DB接口DB接入共享内存+文件二级CACHE处理DB接口DB接入共享内存CACHE处理DB接口DB日志标题日志信息访问计数R/WR/WRW系统分三个模块:日志信息、日志标题、访问计数CGI层对日志标题、访问计数模块有读/写权限;对日志标题模块只有读权限,其数据来源于日志信息模块日志信息模块结构DB接口DB路由数据接入业务处理(线程池)共享内存文件数据淘汰DB数据同步CACHE数据同步访问流水更新流水更新数据同步数据管理模块接入业务处理(线程池)共享内存文件数据淘汰DB数据同步CACHE数据同步访问流水更新流水更新数据同步数据管理模块DataProxyCACHE路由数据RouteClientDataProxyCACHE路由数据RouteServerDataProxyCACHE路由数据RouteClientDBDBDB组DBDBDB组DBDBDB组以单个号码为单元做路由以时间做DB组的路由,组内以号段做路由可任意扩展模块日志重构后的特点将数据区分为活跃数据、不活跃数据和历史归档数据,减少Cache数据量,提升Cache命中率Cache根据数据访问活跃度进行扩容DB根据存储容量进行扩容Qzone日志重构前后数据对比重构前重构后数据量日志标题Cache10台,69G,命中率90%10台,128G,命中率88%DB5台,340G5台,600G日志信息Cache20台,68G,命中率50%12台,3T,命中率80%DB20台,9T12台,10T日志计数Cache10台,122G,命中率100%10台,122G,命中率100%DB4台,100G4台,100G访问量日志标题7100次/秒6000次/秒日志信息5000次/秒4500次/秒日志计数7000次/秒10000次/秒Qzone访问速度慢Http请求量大,下载数据量大用户CPU消耗高用户经常投诉打不开QzoneQzone访问优化前测速Qzone访问提速优化量化性能数据关键路径时间点统计Yahoo14性能优化规则1.MakefewerHTTPrequests2.UseaCDN3.AddanExpiresheader4.Gzipcomponents5.PutCSSatthetop6.MoveJStothebottom7.AvoidCSSexpressions8.MakeJSandCSSexternal9.ReduceDNSlookups10.MinifyJS11.Avoidredirects12.Removeduplicatescripts13.TurnoffETags14.MakeAJAXcacheableandsmallQzone访问优化域名访问优化静态页面与动态数据分离减少http请求降低浏览器CPU消耗Ajax优化WebServer优化域名相关减少*.qzone.qq.com域名的使用,降低动态DNS查询请求走访校园网及北方城市,发现双ISP的localDNS的问题前置机通过域名纠正被错误定位的用户静态页面相关拆分静态页面、图片、样式及flash,分散至imgcache.qq.com等静态文件域名Imgcache.qq.com的CDN外包静态文件服务器优化支持长连接支持gzip压缩使用expiresQzonehttp总请求量静态页面动态数据相册图片其他静态数据804614146减少http请求合并小图片请求合并css和js文件合并动态数据请求动态数据支持304有效利用浏览器cache和js变量缓存动态数据小图片的请求合并(css+背景图)合并css和js文件合并css文件进入Qzone只需要下载2个css文件Css文件合并工具合并js文件删除无用字符(空格、换行等)Js文件合并工具合并动态数据请求合并多个模块的动态数据为一个静态文件HTTPSVR动态CGI处理模块(cgi_qqzone.cgi)CGIHOST(cgi_client_entry.cgi)(cgi_qqzone_static.cgi)TAFS提供动态数据的APACHE服务器浏览器JS标记服务器HTTP请求HTTP请求把动态数据写入TAFS从TAFS读取数据取动态数据UNSET标记位SET标记位获得标记位动态数据支持304对大数据量的请求在存储层上增加时间戳浏览器请求cgi读取数据时间戳浏览器时间戳数据时间戳读取浏览器上报时间戳读取数据返回304返回200YesNo利用js变量和浏览器Cache利用js变量Js将获取的动态数据放入数组变量每次发起动态数据请求前检查数组内是否保存了相应数据利用浏览器cache取消了Cache-Control:No-cache使用url+随机数避免浏览器cache浏览器下载请求量和数据量对比优化前优化后(无Cache)优化后(部分Cache)优化后(全Cache)请求量160865812数据量2.4M1.5M48K8K降低浏览器CPU消耗将XML修改为JSON降低浏览器ParseXML的CPU消耗支持跨域请求,减少proxy.html请求减少iframe的使用尽可能使用div合理使用cookie浏览器20个同域cookie的限制减少因cookie过多造成的分包Item文件检查工具Ajax优化进行数据分级,按优先级顺序请求数据打开Qzone所需的数据优先加载异步化请求,尽量避免浏览器同域下两个并发请求的限制图片延迟加载页面渲染相关的数据延迟加载尽可能多的Para-DownloadingWebServer优化拆分CGI异步逻辑将可以异步化的逻辑交给异步appserver处理配置文件内存化Cgi90%的消耗在读取配置文件使用gprof等工具使用轻量级WebServer放弃apache、优化httpsvr减少共享内存加锁解锁的开销轻量级WebServer(qzhttpd)性能部分:所有机器的CPU的idle都维持在90%-93%左右周末高峰期:最大请求量:900左右,平时都维持在:200-400之间原有服务和现有服务的差别:周一至周四:httpsvr进程cpu最大占用率:10%qzhttpd进程cpu最大占用率:6%,差别不大周末:httpsvr进程cpu最大占用率:20%qzhttpd进程cpu最大占用率:10%,差别较大Qzone访问测速(2007.10)Qzone访问测速(2007.11)Qzone访问测速(2007.12)运营和监控系统测速平台的搭建自动化测试自动化编译模块间调用服务器打包规范发布流程的规范性能优化不可缺少的因素领导的重视成立虚拟项目组负责性能优化性能优化成为KPI互联网运营部可用性考核兄弟部门的支持互联网运营部、互联网研发部、页面制作组、系统架构部、运营技术中心、管理工程部……谢谢TheEnd

1 / 34
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功