大型网站性能监测、分析与优化(全彩)
  • 推荐0
  • 收藏2
  • 浏览561

大型网站性能监测、分析与优化(全彩)

唐文 (作者) 

  • 书  号:978-7-121-29142-5
  • 出版日期:2016-06-28
  • 页  数:336
  • 开  本:16(185*235)
  • 出版状态:上市销售
  • 维护人:张月萍
本书共分为4篇9章,从监测、工具,分析、优化,标准等若干维度解读如何做好大规模应用的性能管理。书中分别详细介绍了应用性能的监测、优化工具与平台搭建,以及性能优化的标准和保持。内容涵盖移动端、PC端、服务器和云、基础网络、产品逻辑和用户行为分析等方面。书中既有方法论,又有具体的实践案例剖析,对于从事大型应用管理的技术人员非常有借鉴意义。
企业级应用性能管理实践,时刻保持卓越用户体验。
前言
1. 写在最前面
为什么要写这本书
在人际关系中,良好的第一印象至关重要。人们愿意在彼此身上寻求信任与安全感,并期望在接下来的实践经历中重现及增强这些好感。同样的道理也体现在互联网产品中,用户体验扮演着极其重要的角色。如今当我们访问的移动应用出现速度慢、图片页面无法打开、视频无法下载、交易拥塞等症状时,大多数人会选择毫不犹豫地离开。正是由于越来越多的互联网应用承载着企业的商业价值,而每当出现应用性能问题时便直接转化为实际收益损失,所以解决性能问题之关键,关乎用户体验,也直接影响效益营收及企业核心竞争力。
正因如此,Google、Yahoo!、Facebook等全球最优秀的互联网公司投入巨大的人力、物力,长期对性能进行优化和保持,同时也印证了高性能网站能够增加流量、提高用户体验,最终增加业务收入、降低运营成本,并沉淀下来大量行之有效的经验和工具。笔者在腾讯、百度工作近十年,不断向国际优秀前辈学习和借鉴,主导及参与多个腾讯事业部级、百度公司级应用性能优化项目,并取得巨大收益。此书以笔者亲历实践为基础,全面系统地为广大互联网从业人员介绍企业级应用性能管理实践。
这本书的不同之处
从Web 1.0时代至今,工程师们一直在尝试各种方法,提高用户对互联网产品的浏览体验。在这个过程中,对用户体验改善有许多的理解和称呼,例如Web前端性能优化、Web性能优化、速度优化、系统性能优化、访问质量优化、可用性优化等,而无论是在哪一个时代、或是哪一种理解,都有一个共同目的——就是让用户体验更好。性能优化界的泰山北斗级人物Steve Souders曾说过一个理论:“80%~90% of the end-user response time is spent on the frontend”最为业界所认可。他是Google Web性能布道者和前Yahoo!首席性能工程师,也引领这一领域多年。他把用户体验优化基本定义为“前端+Web性能优化”。随着移动互联网的发展,这一领域逐渐延伸到移动Web性能优化领域。如今大多数工程师们基本都思考过或曾经接触过性能优化方面的知识,如《雅虎34条黄金守则》,抑或是从众所周知的那几本很经典的国外性能优化指导书中——《高性能网站建设指南》《高性能网站建设进阶指南》等。工作经验丰富的工程师们对于前端性能优化方式耳濡目染,基本都能一一列举出来。虽然这些性能优化原则大多是早些年所提出,主要偏前端范畴,但却对Web性能优化至今都有着非常重要的指导意义。
在互联网产品多样性、复杂化的今天,全球化、移动化、多终端、海量用户数据和实时性等新特点为改善用户体验带来了更大的挑战,甚至可以毫不夸张地说今天的互联网时代是比历史上任何时期都面临更加复杂的局面和更为严峻的挑战。互联网已经进入到用户体验至上的时代。企业商业价值的高度互联网化、移动化及激烈的行业竞争等,都会让企业对用户体验的追求越来越高。与此同时,用户选择门槛也会越来越低而使其更为挑剔,加上影响用户体验的因素越来越多元化及互联网技术、网络、硬件的高速迭代,这种种原因使得前端Web性能已经不再像以前那样对用户体验起到决定性作用。尤其是在中国存在其特有的差异性,从移动、前端、后端、网络、系统、应用、硬件、产品逻辑等都决定了用户体验。本书作者结合在腾讯、百度大规模性能优化的工作经历从一个全新的企业级视角来考量用户体验与工程师之间的关系,试图诠释如何建立完整企业级性能监测、分析与优化体系。
读者对象
本书适合以下读者阅读:
互联网行业技术经理、项目经理、架构师、技术总监、CTO
互联网行业运维工程师、测试工程师、前端研发工程师、后端研发工程师、移动研发工程师
致力于从全局把握应用性能监测、分析与优化和互联网产品的所有互联网从业人员
勘误和支持
由于编写的时间仓促,书中难免会出现一些错误或者不准确的地方。恳请广大读者朋友批评指正,也欢迎您将错误和建议发送邮件至我的邮箱11599096@qq.com,期待能够听到您的真挚反馈。
致谢
感谢原百度同事朱建锋、徐晔等提供素材。最后感谢我的太太在本书写作期间给予我事业上的支持以及写作上的指导。
2. 关于用户体验
无处不在,实时发生
在现代市场上,企业是由运行他们商业价值的产品所定义,而产品的用户体验则直接决定了企业的收入和声誉。而如今,互联网蕴藏着巨大的财富,企业应用逻辑及应用所在的环境日益复杂业务数据量也日趋庞大。随着智能手机、平板电脑与多浏览器的广泛使用,以及云计算和虚拟化的逐渐普及,使得影响应用性能的因素变得越来越复杂,并且形势愈发严峻。几乎所有参与产品的人、事务和资源都会产生用户体验问题,而往往这些不同维度的体验问题会叠加在一起,并不断放大,例如产品逻辑、开发语言、代码性能、基础网络、服务器及云环境等,具体影响如图0-2所示。

图0-2 影响应用性能的因素
直接转换为商业损失
据Google Analytics数据统计,目前移动网页平均加载时间至少需要7s;据Nielsen NormanGroup的调研结果:如果移动网页加载时间超过1s,将开始影响用户的使用,导致用户产生反感。据我们自己的体验也容易理解,在手机端打开一个APP应用,如果超过3s还是白屏,我们基本会放弃使用这个APP应用。值得关注的是,用户放弃使用或减少使用将直接影响企业的收入。所以说,应用性能问题造成的损失将远超我们的想象。而这种损失从某种程度上来说,不仅危害了企业本身的商业模式和产品价值(这种情况用户不会关心产品价值本身是否好坏),而且直接对产品所在的企业产生不信任感,甚至进一步影响到企业形象。例如:
1 用户体验大幅落后竞争对手。
2 网页和应用速度慢直接导致大量用户永久性流失。
3 用户点击意愿下降,访问量减少,收入锐减。
4 导致搜索引擎降权,减少曝光率。
5 性能问题随着全网、全端、全球化深入推进,损失将会放大数倍。
6 无法评估日常发布质量,无法保障发布是否会影响用户体验。
7 导致推广成本浪费,增加企业运营成本。
8 性能问题会交叉影响,并不断放大危害。
9 缺少性能评估数据、性能问题权责不清晰,各团队解决问题效率低下。
10 不能评估IDC、CDN等运营商服务质量和优化收益。
用户体验已经成为衡量应用好坏的最终标准。Google等世界级巨头是性能优化的先驱,而且多
年将性能优化放在重要战略地位。
3. 在腾讯、百度实践的体会
天下武功,唯快不破
其实腾讯早在2006年就已经开始大规模性能优化。在当时还是门户混战的资讯时代,我有幸加入腾讯并负责腾讯网的整体运维和运营规划工作。由于历经两次大规模性能优化,当时的资源和工具都极其匮乏。于是乎,从组建全国分布式IDC、CDN、GSLB、质量监测等平台建设到联合8大部门近50人的跨部门性能优化团队,由前端、后端、系统、网络、内容等维度进行了体系全面的优化,使其最终反超传统门户网站,而这些平台后来也慢慢沉淀为腾讯的基础公共平台。
由于资讯时代的互联网新闻比竞争对手快一秒发布,都会抢占商业先机。所以当时互联网最核心的公司文化是用户体验第一——即快速发布、快速分发、快速打开。我们会根据实时统计的全网用户浏览新闻速度和用户偏好,随时调整、优化内容,让用户阅览新闻快如闪电。用户体验也已经成为工程师的核心文化。“速度影响用户体验”这是当时身边所有同事都默认的基本规约,也是工作的基础准则。从架构师全局可用性设计,前端工程师优化代码、后端工程师优化逻辑、网络工程师优化延时、系统工程师优化内核、产品工程师优化体验等,每位同事都在为用户体验做贡献。而我有幸经历了腾讯网两次大规模性能优化,使其从原来远远落后业界水平,四大门户最差,到经过优化后全面反超,具体优化与收益如图0-3所示,由此带领团队也获得了腾讯重大架构一等奖。
经过三年两次大规模的性能优化,让自己对互联网职业有了更为深刻的理解。任何职业,无论是产品、研发还是测试、运维,越往后发展,衡量标准不仅仅是职业基本技能,而能否考量用户体验已经成为优秀与否的重要标准之一。用户体验的优化更是一个复杂的系统性工程,需要一套完整的监测、分析、优化平台和方法论,而这更迫切地需要每一个参与产品的人在意识上的高度重视,任重且道远。

图0-3 速度优化成功案例
搜索之争,一秒判生死
自2011年加入百度,我主要负责百度产品的访问速度优化改进。当时中国互联网已经进入“搜索时代”,让人们最平等便捷地获取信息、找到所求,是百度一直孜孜不倦的追求。而搜索速度一直是搜索引擎用户体验重要的组成部分,也是技术上挑战最大的难题之一。一方面,搜索引擎趋向于索引越来越大的数据和采用越来越复杂的策略算法,这些都会增加后端检索时间,导致搜索速度变慢;另一方面,用户电脑性能和网络环境都对搜索速度有非常大的影响,而这些因素都在搜索引擎技术控制的范围之外。
那么每提高0.5s的检索速度需要多大的投入?事实上,通过极速搜索的创新模式,在保证搜索质量的同时,百度能够将原有搜索速度提高5~10倍,最快0.04s即能返回结果。而为了实现这一功能,30多位百度核心工程师对检索系统的29种技术模块进行了升级改造,保证了极速搜索服务的可靠性和稳定性。为了解决预测所需的大量计算,百度全年在服务器等基础设施上投入超过一亿元人民币。那么每提升0.5s的速度,又能给用户和百度带来多么大的价值?百度曾做过一个有关搜索速度和用户体验关系之间的试验:在一个较小的区间内,搜索速度每延迟100ms,无点击比例就会增大1%;而随着区间的增长,这个关系会呈现出指数级的曲线。由此可见,虽然我们无法明显感知100ms的变化,但眼球已按照潜意识的指引做出选择。正因如此,可以说,速度是令搜索引擎高下立判,甚至决定其成败的要穴。有鉴于此,历经近三年的持续性能优化改进,最终将百度网页搜索、移动搜索、多个商业产品及社区产品速度优化到业界最快。
由于当时没有成体系的监测工具,第三方只能满足很小的一部分需求。而要支撑公司级性能优化,每年要支付给第三方300万元。最终我带领团队搭建了UAQ(用户访问质量)、APM(应用性能管理)平台,协助百度网页搜索、移动搜索、多个商业产品及社区产品速度优化到业界最快,这些平台通过融入百度商业平台,直接让百度的企业客户受益,如图0-4和图0-5所示。

图0-4 百度性能优化及收益

图0-5 性能优化对内、对外价值参考

目录

目录
第 1 部分 基础篇
第1 章 应用性能管理概述 / 2
1.1 关于应用性能 / 2
1.2 关于应用性能管理 / 2
1.3 基本意识 / 3
1.3.1 价值与意义 / 4
1.3.2 出发点 / 6
1.3.3 相关的人 / 7
1.3.4 解决的问题 / 9
1.3.5 前提条件 / 11
1.3.6 组织形式 / 12
1.4 如何正确开始 / 14
1.5 投入与收益平衡 / 16
1.6 优秀企业的经验 / 17
第 2 部分 监测、工具篇
第2 章 应用性能监测实践 / 20
2.1 应用性能监测概述 / 20
2.2 应用性能持续监测 / 23
2.2.1 移动监测 / 24
2.2.2 Web监测 / 37
2.2.3 系统监测 / 56
2.2.4 应用监测 / 62
2.2.5 日志监测 / 89
2.3 应用性能即时监测 / 94
2.3.1 PC即时监测 / 101
2.3.2 移动Web App即时评测 / 104
2.3.3 移动Native App即时评测 / 106
2.3.4 网络即时监测 / 109
第3 章 性能监测工具介绍 / 113
3.1 监测工具概述 / 113
3.2 持续监测工具 / 115
3.2.1 Keynote / 116
3.2.2 Dynatrace / 117
3.2.3 App dynamics / 119
3.2.4 Newrelic / 120
3.2.5 基调 / 122
3.2.6 博睿 / 124
3.2.7 OneAPM / 125
3.2.8 云智慧 / 128
3.3 即时监测工具 / 130
3.3.1 YSlow / 130
3.3.2 Pagespeed Insights / 131
3.3.3 WebPageTest / 132
3.3.4 ChromeDevTools / 133
3.3.5 PhantomJS / 135
3.3.6 Jsperf / 136
3.4 其他工具 / 136


3.5 应用性能指标 / 140
3.5.1 用户指标 / 140
3.5.2 服务器指标 / 147
3.5.3 移动指标 / 149
3.5.4 其他指标 / 150
第 4 章 性能监测平台搭建实践 / 152
4.1 为什么要搭建监测平台 / 152
4.2 如何搭建性能监测平台 / 154
第 3 部分 分析、优化篇
第 5 章 应用性能分析实践 / 160
5.1 产生性能问题的因素 / 160
5.1.1 产品逻辑及用户行为 / 161
5.1.2 中国基础网络 / 161
5.1.3 PC端环境 / 163
5.1.4 移动端环境 / 164
5.1.5 代码及应用 / 165
5.1.6 服务器及云环境 / 166
5.2 应用性能分析概述 / 166
5.2.1 从用户及生产环境着手 / 167
5.2.2 常见的分析方法 / 176
5.2.3 主要分析视图 / 182
5.2.4 横向对比的意义 / 202
5.2.4.2 按行业分析 / 203
第 6 章 应用性能优化实践 / 205
6.1 应用性能优化概述 / 205
6.1.1 确保优化方向正确 / 206

6.1.2 确定优化带来的收益 / 207
6.1.3 功能与性能的平衡 / 209
6.1.4 防止过早和过渡优化 / 209
6.2 网络优化 / 210
6.2.1 IDC优化 / 211
6.2.2 ISP优化 / 217
6.2.3 CDN优化 / 221
6.2.4 BGP优化 / 229
6.2.5 DNS优化 / 231
6.3 系统优化 / 234
6.3.1 压缩优化 / 236
6.3.2 缓存优化 / 237
6.3.3 分离优化 / 240
6.3.4 内核优化 / 242
6.3.5 传输优化 / 245
6.3.6 并发优化 / 248
6.3.7 隔离优化 / 250
6.3.8 网卡优化 / 251
6.3.9 硬件优化 / 254
6.4 前端优化 / 257
6.4.1 首屏优化 / 259
6.4.2 内容优化 / 261
6.4.3 请求优化 / 263
6.4.4 CSS优化 / 266
6.4.5 JavaScript优化 / 269
6.4.6 图片优化 / 271
6.5 后端优化 / 275
6.5.1 架构优化 / 275
6.5.2 并行优化 / 276
6.5.3 异步优化 / 276
6.5.4 基础优化 / 276

6.5.5 算法优化 / 277
6.5.6 程序优化 / 277
6.5.7 缓存优化 / 278
6.6 移动优化 / 278
6.6.1 网络优化 / 279
6.6.2 请求优化 / 282
6.6.3 缓存优化 / 283
6.6.4 策略优化 / 284
6.6.5 启动优化 / 286
6.6.6 交互优化 / 286
6.6.7 内存优化 / 287
6.7 其他优化 / 290
6.7.1 SPDY / 290
6.7.2 HTTP/2 / 291
6.7.3 ESI / 293
6.7.4 SDCH / 294
6.7.5 BigPipe / 294
6.7.6 DNS Prefetch / 295
6.7.7 HHVM / 295
第 7 章 性能优化平台搭建实践 / 296
7.1 为什么要搭建优化平台 / 296
7.2 如何搭建性能优化平台 / 297
第 4 部分 标准、保持篇
第 8 章 应用性能优化标准 / 304
8.1 防止应用性能退化概述 / 304
8.2 通过规范防止性能退化 / 304
8.3 通过流程防止性能退化 / 307
8.3.1 应用性能准入 / 307
8.3.2 应用性能认证 / 308
8.3.3 应用性能巡检 / 309
8.4 业界优秀企业的经验 / 310
8.4.1 雅虎Web优化最佳实践 / 310
8.4.2 谷歌Web优化最佳实践 / 310
第 9 章 应用性能优化保持 / 313
9.1 性能优化保持概述 / 313
9.2 通过平台防止性能退化 / 313
9.2.1 自动优化开发框架 / 313
9.2.2 自动优化基础平台 / 314
9.3 通过告警防止性能退化 / 314

读者评论

相关图书

Terraform:多云、混合云环境下实现基础设施即代码(第2版)

Yevgeniy Brikman ( (作者) 白宇 (译者)

Terraform工具已经成为DevOps领域的关键角色。在各种云平台和虚拟化环境(如AWS、Goolge Cloud、Azure等)中,可以对基础设施即代码(...

¥108.00

DevOps安全:云安全服务

Julien Vehent (作者) 覃宇 (译者)

本书主要介绍了 DevOps 实践中最容易被忽视的一环——安全,并且对云原生服务的安全保障也做了全面的阐述。书中详细介绍了 Web 攻击防范、权限验证、日志监控...

¥108.00

企业级DevOps技术与工具实战

刘淼 张笑梅 (作者)

本书包含DevOps理论的介绍,深入浅出地解析了DevOps体系所包括的Agile/Lean/ITSM/TPS各种方法的精粹和脉络,为DevOps爱好者提供了较...

 

SRE生存指南:系统中断响应与正常运行时间最大化

Nat Welch (作者) 冯文辉 冯文辉 (译者)

站点可靠性工程(Site Reliability Engineering,简称SRE)是一个令人兴奋的新兴领域,它专注于如何确保系统稳定、可靠地运行。本书基于一...

 

Zabbix企业级分布式监控系统(第2版)

吴兆松 (作者)

本书基于稳定版本Zabbix 4.0,对Zabbix的各项功能进行了详细而深入的讲解,包括监控系统规划、安装包定制、架构高可用、性能调优、指标数据采集、自动化处...

 

Nginx实战:基于Lua语言的配置、开发与架构详解

王力 王力 (作者)

本书主要讲解了Nginx在反向代理和应用开发中的作用,阅读本书可以了解Nginx在互联网开发中扮演的多个角色,充分利用这些角色的各项功能有助于提升服务的整体性能...

¥47.40