美图 唐扬 美图秀秀社区化的性能优化探索与实践

CodeWarrior

2019/07/08 发布于 编程 分类

GIAC2019 

文字内容
1. 美图秀秀社区化的性能优化探索 与实践 唐扬 美图 后端技术负责人
2. 讲师简介 唐扬 美图秀秀社区后端负责人 网易微博 网易花田 2010 2018 美图秀秀 2013 新浪微博
3. 讲师简介 唐扬 美图秀秀社区后端负责人 网易微博 网易花田 2010 2018 美图秀秀 2013 新浪微博
4. 演讲大纲 Ø 社区现状和挑战 Ø 性能优化关注点 Ø 如何合理评估系统性能 Ø 美图秀秀社区性能优化实践
5. 背景 Ø 依托于工具 Ø 图片社区 Ø 增长迅猛
6. 挑战 大流量 产品迭代快 依赖复杂
7. 演讲大纲 Ø 社区现状和挑战 Ø 性能优化关注点 Ø 如何合理评估系统性能 Ø 美图秀秀社区性能优化实践
8. 美图秀秀社区架构 监控告警 Grafana 用户层 网络层 InfluxDB 服务层 用 户 资源层 DB 内 容 互 动 Falcon 云 存 储 云 处 理 C D N ELK 报警 缓 存 队 列 依赖层 算 法 广 告 搜 索
9. 性能优化关注点 CDN 网络延迟 用户体验 错误率 响应时间 卡顿
10. 演讲大纲 Ø 社区现状和挑战 Ø 性能优化关注点 Ø 如何合理评估系统性能 Ø 美图秀秀社区性能优化实践
11. 如何合理评估系统性能 一体化监控 全链路压测
12. 一体化监控 基础监控 客户端监控 一体化监控 应用监控 容器监控 链路监控 资源监控
13. 客户端监控 - hubble 实时反映用户体验 性能优化的指向标 CDN监控利器
14. 客户端监控 - hubble 地区 运营商 网络错误 平台 耗时统计 域名 请求统计 网络类型 维度 指标
15. 客户端监控 - hubble 分步耗时统计 等 待 时 间 DNS 时间 握手 时间 SSL 时间 发 送 时 间 首包时间 包接收 时间
16. 客户端监控 - hubble
17. 客户端监控 - hubble ELK采集 客户端SDK grafana 服务端 InfluxDB Kafka Storm
18. 应用监控 目标 JVM 吞吐量 (R) 内因 锁 异步队列 错误率 (E) 响应时间 (D) 外因 资源 宿主机 网络
19. 应用监控 访问量 JVM profile 线程池 应用监控
20. 应用监控 – 访问量趋势 系统整体运行情况 Ø 访问量 Ø 响应时间 Ø 错误数 Ø 响应时间区间分布
21. 应用监控 – 资源profile数据 资源整体运行情况 Ø 访问量 Ø 响应时间 Ø 响应时间区间分布
22. 应用监控 – JVM信息 JVM运行信息 Ø JVM内存分布情况 Ø GC频率和停顿时间
23. 应用监控 – 线程池信息 线程池异常情况 Ø 任务堆积数 Ø 活跃线程数
24. 全链路压测 – 目的 排查性能瓶颈 容量评估 预案演练
25. 全链路压测 – 实现 压测环境 第三方依赖 线上服务 Mock服务 真实流量 压测流量 线上存储 影子存储
26. 演讲大纲 Ø 社区现状和挑战 Ø 性能优化关注点 Ø 如何合理评估系统性能 Ø 美图秀秀社区性能优化实践
27. 性能优化实践 首页时间 图片加载 时间 接口时间 DNS TCP 服务 响应 图片 加载
28. 性能优化实践 – DNS优化 性能毛刺 DNS劫持 解析错误 流量跨网
29. 性能优化实践 – DNS优化 FastDNS DNS解析 结果缓存 LocalDNS HttpDNS
30. 性能优化实践 – DNS优化 Ø 平均耗时减少 50% Ø 最大耗时控制在 200ms 之内 Ø Http平均请求时间下降80-100ms 平均耗时对比 最大耗时对比
31. 性能优化实践 – 图片加载优化 融合调度 图片预加载 图片大小优化
32. 性能优化实践 – 融合调度(Chaos) 目标:提升容错率和使用体验 客户端 CDN1 CDN2 Chaos SDK CDN3 …… 请求播放地址 调度地址 服务端 播放地址 上报质量数据 Chaos系统 CDN CNAME MeiduDNS 配置系统 MeiduDNS 质量监控系统 CDN评分
33. 性能优化实践 – 图片大小优化 评估不同编码器压缩性能,即在相同失真下,对比输 出图片大小,同时兼顾编解码速率 画质 图片大小 速率
34. 性能优化实践 – 图片大小优化 图片大小 解码速度 Ø iOS平台,同等尺寸同等画质下, HEIF的软解码速度 HEIF硬解码速度 优于 WebP; 远远优于 WebP Ø android平台,同等尺寸同等画质 下,HEIF的软解码速度差于WebP;
35. 性能优化实践 – 服务端优化
36. 性能优化实践 – 服务端优化 Ø xxtop, xxstat Ø perf, systemtap Ø jmc, jstat, jmap 排查方法 Ø 业务日志,trace日志 Ø 系统日志 Ø GC日志 Ø 应用监控 Ø 基础设施监控 Ø 组件监控
37. 性能优化实践 – 启动优化 10% • 重启时慢请求比例达到 • Memcached、Redis、HTTP等资源响应时间波动明显 • CPU使用率上涨一倍 • Safepoint频率剧增
38. 性能优化实践 – 启动优化 • 在压测环境复现问题 • -XX:+PrintSafepointStatistics'>XX:+PrintSafepointStatistics -XX:PrintSafepointStatisticsCount=1'>XX:PrintSafepointStatisticsCount=1 • 增加-XX: -UseBiasedLocking
39. 性能优化实践 – 启动优化 Ø 现象 • young gc停顿时间从20ms上涨到100ms • CPU使用率上涨一倍 Ø 排查 • GC分析 • CPU profile Ø 原因 • JIT占用CPU资源 Ø 解决方案 • 预热
40. 性能优化实践 – 启动优化 重启后,慢请求比例从10%下降到0.5%以下
41. 性能优化总结 Ø 关注用户使用体验 Ø 一体化监控和全链路压测帮助我们找到性能问题 Ø 性能优化是一个系统工程,需要多团队的合作
42. Q&A t_y_1@163.com
43. 关注msup微信公众账号 关注高可用架构公众账号 获取更多技术实践干货 改变互联网的构建方式