淘宝前台系统性能分析与优化

spesun

贡献于2013-06-30

字数:0 关键词: 前端技术

叔同 淘宝前台系统性能分析与优化 讲师介绍 • 产品技术部-中间件&稳定性平台-叔同 • 2005年毕业于吉林大学,计算机科学与技术专业; 2010年 加入淘宝. 4年行业软件开发经验,3年互联网开发经验; 对构建高性能、可扩展的Web应用十分感兴趣;目前在淘 宝Java中间件团队从事性能优化相关的工作 :淘宝叔同 :jlusdy 2 优化的目的 • 提升容量 – 提升QPS – 降低Server RT – 降低服务器成本 • 提升用户体验 – 降低响应时间 – 提升用户体验 – 提升转化率和交易量 3 优化的步骤 • 优化是持续性的工作 – 衡量现状 • Qps • RT • 页面大小 • 每请求内存 – 设定目标 – 性能优化 4 前台系统结构 5 课程内容 • 服务器端分析 • 服务器端优化 • 浏览器端分析 • 浏览器端优化 6 服务器端分析 7 章节内容 1. 线上压测 2. 分析工具 3. 时间消耗分析 4. 瓶颈查找 8 单机压测 – Ab • ab -c 12 -n 20000 localhost/market.htm – Httpload • http_load -rate 300 -seconds 120 item-urls • http_load -parallel 40 -seconds 120 item-urls – Apache Nginx分流 • 非幂等性请求 – 得到QPS/RT/页面大小/请求内存数 – 注意事项 • Offline机器 • 避免本机压测 • 关闭Keep alive • 关注系统表现 9 集群压测 – httpload – 负载均衡配置 – VIP offline机器 – 注意事项 • 凌晨压测 • 关注系统表现 • 关注依赖集群表现 • 相关人员在场 10 分析工具 • OS – top, sar, vmstat, mpstat, iostat, netstat • JVM – jps, jstack, jmap, jstat • GC – Gchisto, PrintGCStats 11 分析工具 • WebX Profiler • TProfiler • BTrace • VisualVM(Remote Edition), Xming • 性能分析平台 • OProfile/Perf Google-Perftools 12 服务器端特点 • 页面模板渲染 – Velocity – 页面较大 • 外部调用多 – DB, HSF, Tair, Search, TFS • 磁盘读写少 – Log – Vmcommon • QPS相对较低 13 时间消耗分析 14 瓶颈查找 • 什么是瓶颈 – 瓶颈是系统中比较慢的部分,在瓶颈完成前,其他部分需要等 待 • 使用TProfiler 15 一般性瓶颈 •CPU计算 – 字符串查找 替换 拼接 – 编码 解码 – Gzip压缩 • 外部调用 – 网络IO开销 – 序列化反序列化 16 服务器端优化 17 章节内容 1. 软件升级 2. JVM调优 3. 应用自身优化 18 软件升级 • Apache -- > Nginx – 提升10%+ • Jboss 4 -- > Tomcat 7 – 线程池/ NIO – 提升10%- • JVM 1.6.0_23 -- > 1.6.0_32 • OS – 32bit -- > 64bit – 内核升级 提升40% • 成本最低 效果明显 19 JVM调优 • 减少major GC • 合理分配堆大小 • 优化相关参数 20 PV与GC的关系 21 吞吐量与GC的关系 来源:小邪 22 选择垃圾收集器 23 GC Pause 参考资料 24 GC Pause Time You should try to maximize the number of objects reclaimed in the young generation ----Tony 25 JVM堆结构 26 减少major GC • 减少young晋升到old的对象 – 合理设置各个分区大小 – Survivor Space Size – Tenuring Threshold – 优化系统代码 • 及时回收对象 • 减少内存使用 • 减小页面大小 27 合理分配堆大小 • 线上现状 – 线上参数扫描 • 新生代占堆的30%-50% • 新生代500M-->2560M QPS提升70% 28 优化相关参数 29 应用自身优化 • 优化Velocity • 压缩模版大小 • 设置最佳并发数 • 代码瓶颈优化 • 二方包优化 • 外部调用 • 其他优化 30 优化Velocity 来源:君山 • Sketch Char to byte 提升100% • 解析执行改编译执行 提升10% 31 压缩模板大小 • 删除空行 • 删除多余空格 • 长URL压缩 – List 减小5%以上 • 用URL别名 – List 去掉http:头,减小1% • 业务上去重 • 模板大小和QPS成反比 – 大小减少10% QPS提升10% 32 并发数与资源消耗 33 最佳并发线程 • 从CPU的角度计算: – 并发数=((CPU时间+CPU等待时间) / CPU时间) * CPU数量 • 从堆内存的角度计算: – 并发数= young gc/((小GC时间间隔/rt) * (request memory)) 34 代码瓶颈优化 • 案例 – 去掉吞异常,CPU使用率提高30% 35 二方包优化 • 案例 – Bean copy 提升20倍以上 • 可以做一次不做多次 – IP库 提升1倍 • 可以提前做的提前做 • 不受业务影响,永久受益 36 外部调用 • 并行HSF • 并行搜索 • 合并外部调用 • 会降低响应时间,不会提升吞吐量 • 减少压缩解压 – Tair client • 使用更优的序列化协议 – Protocol Buffers – Kryo 比PB快20% 37 其他优化 • 类中Field要排序 – 频繁使用的放一起 – 基本类型引用类型分开放 • 批量处理数组 – 按行处理不要按列 可以快20倍 • 使用乐观策略 • 正确处理异常 38 其他优化 • 动态资源静态化 • 后台依赖前台化 – 降低复杂度 – 提升性能 • 浏览器渲染页面 – 数据远小于页面的场景 • 善用缓存 – 整页缓存 39 性能黄金法则 • 80 % -90% of the end-user response time is spent on the frontend -- Steve Souders 40 浏览器端分析 41 章节内容 1. 基础知识 2. 请求分析 3. 分析工具 4. 性能指标 42 一些限制 • 光速 – 光纤中的光速 200000kmps – 北京到杭州1120km 来回需要10ms • 网速 – 2Mbps(256KBps) 下载50KB页面 需要195ms • 网卡 – 服务器1000M网卡 – 虚拟机理论最大QPS = 1000/8/3(台)/50KB * 1024 = 850 43 一些限制 • 浏览器并发数限制 44 http://stevesouders.com/hpws/parallel-downloads.php 了解HTTP • 请求头 – Cache-Control – keep-alive – User-Agent – Cookie – If-Modified-Since • 响应头 – Expires – Cache-Control – Content-Encoding • 状态码 45 页面请求 用户角度 46 页面请求 47 页面请求 实际情况 http://hotspot.taobao.net:9999/hotspot/waterfall 48 分析工具 • Firefox – Firebug – YSlow – NetExport • Chrome – Speed Tracer – PageSpeed • Fiddler 2 • HttpWatch • dynaTrace AJAX Edition • WebPagetest/Aol PageTest 49 性能指标 • 开始渲染时间 • Domready • 可交互时间 • 首屏时间 • onLoad 50 线上监测 Alibench / CommonJS/ Navigation Timing 51 浏览器端优化 52 章节内容 1. 减少请求数 2. 减小响应大小 3. 减少DNS查询 4. 浏览器渲染优化 53 减少请求数 • 缓存资源 • 组合CSS/JS • CSS Sprites • 必要时再加载 – 根据用户行为 • 杜绝404 • 减少重定向 54 减小响应大小 • 减小HTML – 页面越小延迟越小 – Gzip – HTML瘦身 – 减小Cookie大小 • 减小静态资源 – 最小化CSS/JS – 优化图片 55 HTML瘦身 • 移除空白 • 删除属性引号 • 避免行内样式 • 为JS变量设置别名 – document.getElementById -- > $ • 使用相对的URL 56 使用相对URL 57 减少域名查询 • 数量上平衡 – 多, DNS查询多 – 少, 并发受限制 • 有些域名不推荐使用 – img05~8.taobaocdn.com 58 浏览器渲染优化 • 首屏优先 – 减少Dom数量 • 按需加载 • 次要信息异步化 – 多,请求数多 – 少,页面大 • 避免页面缩放图片 59 淘宝版YSlow http://hotspot.taobao.net:9999/hotspot/frontOptimizeAnalysis 嗷嗷 60 总结 1、系统的优化程度,取决于你对它的了解程度 2、优化的方法有两种,做得更少或者做得更快 61 推荐资料 • 淘宝开源 • Java Performance • 构建高性能Web站点 • 高性能网站建设指南 • 高性能网站建设进阶指南 • Troubleshooting Guide for Java SE 6 with HotSpot VM • Java SE 6 HotSpot Virtual Machine Garbage Collection Tuning • Step by Step GC Tuning in the HotSpot Java Virtual Machine 62 Q&A Q&A 63 谢 谢 ! 64

下载文档,方便阅读与编辑

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 8 金币 [ 分享文档获得金币 ] 26 人已下载

下载文档

相关文档