艺龙网高级技术经理郭思文 - Web服务器性能优化分享

仁寻菱

2017/11/14 发布于 技术 分类

应用系统性能优化是应用容量管理中的重要主题。传统方法是依靠在代码中大量埋点打日志进行人工分析,周期长效率低,并且有代码侵入。本次演讲向大家分析艺龙如何依托听云进行相关系统的性能问题定位、分析,最终优化上线的过程。

文字内容
1. 艺龙Web服务性能优化分享 艺龙 运维技术部 郭思文
2. 目录 • 艺龙与艺龙运维部 • 艺龙应用系统架构 • 性能优化原则与方法 • case 1:艺龙商户入口优化案例 • case 2:艺龙混合云与微信入口优化案例
3. 关于艺龙 艺龙旅行(elong.com)是中国专业的移动在线住宿 预订平台,创立于1999年。 通过艺龙旅行APP、艺龙网和微信钱包,向超过2亿会 员提供酒店、公寓、客栈、机票及火车票等预订服务。
4. 艺龙运维技术部 稳定性 工程效率 资源效率
5. 艺龙应用系统体系结构 PC-Online 渠道 App-MobileAPI WX/H5-Mobile Call Center 分销入-NB 分销出-直连 酒店后台-EB 酒店API 国内酒店业务 产品 搜 索 代 理 搜 索 商 品 库 排 序 促 销 订 单 结 算 国内 机票 业务 国际 酒店 业务 国际 机票 业务 火车 票 汽车 票 …… 风控 会员 支付 公共服务 反爬 发票 AB测试 短信 …… 业务平台 CRM MIS
6. 艺龙应用系统体系结构 Backend Application soa DNS集群 VIP LVS集群 EFE集群 tomcat Application Spring jvm CentOS Openstack KVM 物理机 LVS …… EFE…… VIP…… jvm…… Openstack KVM……
7. 艺龙应用系统体系结构 腾讯云DNS/安全/CDN 逻辑IDC1 世纪互联机房 天竺机房 OpenStack OpenStack 逻辑IDC2 云谷机房 OpenStack VMWare Azure(测试) 腾讯云 计算/存储 • 根据不同IDC、公有云在不同地区、运营商的链路质 量,通过外网DNS调度到优势机房 • 机房间应用统一管理,流量统一调度
8. 性能优化原则与方法 • What——优化什么? • 高价值应用 • 能为公司带来直接收入 • 能提高大量/核心用户的用户体验 • 值得在优化难度低的应用上花费时间么? • 工程效率应用 • CI/CD相关,直接提高开发、迭代、上线效率 • 自动化相关,特别是办公、运维自动化 • 流程优化与技术优化并重
9. 性能优化原则与方法 • Where——优化哪? • 分段耗时数据——听云、打点 • 7层——DNS时间、SSL时间、首包时间、HTML加载、页面渲 染…… • 4层——TCP建链、网络延迟、丢包 • 长耗时优先原则 • 由易到难原则 高 优 低优先级 化 难 度 中优先级 中优先级 高优先级 低 耗时时间 高
10. 性能优化原则与方法 • When——什么时间优化? • 业务优先,跟随业务产生优化价值 • 优化不是一蹴而就,随着业务迭代而迭代 • 避免进入“技术陷阱” • 追求最新、最快、最NB的技术而忽略业务 20%性能优化收益 业务价值 优化后业务价值 优化价值
11. 性能优化原则与方法 • Who——谁做优化? • 不是一个人在战斗——体系作战 • 前端RD、后端RD、应用OP、网络OP…… • 建立横向优化项目组,推进优化项目 • How——怎么优化? • 前端——避免重复渲染、资源合并…… • 后端
12. 性能优化原则与方法
13. case 1:艺龙商户入口优化案例 • 问题背景 • What——艺龙商户核心入口 • 随机地区经常集中爆发白页,超过4次/月 • 香港、海外用户大概率加载失败 • 页面打开时间、打开时间毛刺优化
14. case 1:艺龙商户入口优化案例 商户入口优化项目 120 100 100 80 60 40 30 20 12 0 0 大量不可用地区 6 影响商户 3 被打扰次数 优化前3个月 优化后3个月
15. case 1:艺龙商户入口优化案例 • 白页问题分析 • 收到爆发白页用户投诉后,第一时间回访 • QQ远程操作确定DNS劫持 • 劫持者注入的广告js导致页面加载异常 • 地域、运营商集中 • 行动 1. 指导用户绑host临时访问 2. 收集证据,工信部投诉 www.chinatcc.gov.cn 3. 迁移https – 新问题:慢 – 用户不敏感,后续处理
16. case 1:艺龙商户入口优化案例 • 香港、海外用户大概率加载失败问题分析 • 海外访问国内IDC链路质量差 • 行动 • 动静分离,静态资源调度到海外CDN • 购买香港接入点,动态资源经香港-大陆专线转发到 IDC(非最优) • 更优方案——高投入,跟随海缆接入 • 香港/日本IDC覆盖东亚、东南亚 • 硅谷IDC覆盖北美用户 • 圣保罗覆盖南美用户 • 法兰克福覆盖欧洲用户
17. case 1:艺龙商户入口优化案例 • 页面平均打开时间超过3s分析 • 耗时分段分析 • 服务器耗时 • 前端耗时 • 服务器端平均与最大执行时间
18. case 1:艺龙商户入口优化案例 • 前端问题优化 • 非阻塞js • 腾讯云图床+CDN,动态调整尺寸,压缩图片时间
19. case 1:艺龙商户入口优化案例 • 服务器问题优化——响应时间毛刺 • 毛刺导致服务不稳定 • 90分位响应时间小于2秒,99分位毛刺超过10秒 • 依赖的后端组件响应时间不稳定 • 解决方法:超时2秒,自动重试 • 结果:毛刺点访问缓慢用户由10%->1%
20. case 1:艺龙商户入口优化案例 • 服务器问题优化2——慢SQL • SQL业务逻辑分析 • 按ID查询计算、结果集小、查询频率高 • 多级Cache • 本地——FIFO更新策略,限制条目 • Redis——通过缓存维护服务更新 • Cache失效 • 数据变化推送缓存维护服务 • 缓存维护服务更新Redis,通知服务器cache失效
21. case 2:艺龙微信入口优化案例 • 问题背景 • What——艺龙用户核心入口 • 微信点击->艺龙首页用户损失 • 华南用户访问质量差
22. case 2:艺龙微信入口优化案例 • 微信点击->艺龙首页用户损失 • 超长公网路径,多次交互 • 部分地区点击到打开响应时间超过5秒 • 艺龙IDC集中在北京 • 首页依赖微信登录与艺龙登录 艺龙北京 IDC 3. 请求用户 登录To k en 腾讯天津 IDC 公网 7. 用户请求并 返回首页内容 5.返回301跳转 微信认证 2. 打开艺龙 4. 请求用户登录Token 深圳微信 用户 6. 用户进行 微信认证 1. 用户登录 8. 用户请求并 返回CDN 数据 腾讯深圳 IDC
23. case 2:艺龙微信入口优化案例 • 分析 • 腾讯云华南IDC质量 • 测试300KB页面对比北京,使用听云拨测 • 考虑将前端应用部分迁移腾讯云华南节点
24. case 2:艺龙微信入口优化案例 • 前端迁移改造 • 依赖分析与缓存前置 用户 公网 艺龙微信前 端 红包系统 M API总线 促销系统 用户 公网 腾讯云 华南IDC 艺龙微信前 端 前置搜索 系统 Buffer Push M iss Push Push Push 红包系统 M API总线 促销系统 艺龙 北京IDC 会员系统 会员库 搜索系统 商品库 艺龙 北京IDC 会员系统 会员库 商品库
25. case 2:艺龙微信入口优化案例 • 混合云部署 腾讯CDN CDN 回源 腾讯云 华南IDC CDN源站 华南、华中 用户 首页、搜索 返回腾讯云入口 成单、支付 返回北京入口 智能DN S 返回北京入口 华北用户 首页、搜索 艺龙微信前 端 成单、支付 前置搜索 系统 艺龙 北京IDC 艺龙微信前 端 Buffer 专线 红包系统 M API总线 促销系统 成单、支付 …… 会员系统 搜索系统 会员库 商品库
26. 拥抱业务,创造技术价值
27. THANK YOU