第1章 基于用户体验的性能优化要素 1
1.1页面用户体验的要素介绍 1
1.2白屏时间 3
1.2.1白屏时间的重要性 3
1.2.2白屏过程详解 4
1.3首屏时间 10
1.3.1首屏时间的定义 10
1.3.2首屏时间的重要性 11
1.4页面整体加载完成 15
第2章 前端性能优化实战 16
2.1延迟渲染 16
2.1.1挑战和困难 17
2.1.2解决方案 17
2.2 SEO Ajax 20
2.2.1挑战和困难 21
2.2.2解决方案 21
第3章 网站性能分析 24
3.1快速了解网站性能 24
3.1.1使用YSlow进行性能分析 24
3.1.2使用PageSpeed进行性能分析 25
3.1.3使用WebPagetest进行性能分析 27
3.2真实用户前端性能监控 29
3.2.1真实用户前端性能数据采集 29
3.2.2数据采集可行性分析 30
第4章 服务端性能优化 36
4.1最大QPS推算及验证 36
4.1.1 RT 37
4.1.2单线程QPS 38
4.1.3最佳线程数 38
4.1.4最大QPS 39
4.1.5实验数据验证公式 44
4.1.6压力测试最佳线程数和QPS的临界点 47
4.2同步模型与异步模型 49
4.2.1同步模型 49
4.2.2异步模型 50
4.2.3为什么异步模型需要的线程数少 58
4.2.4两个模型的对比及异步模型适用场景 59
4.2.5小结 60
4.3数据结构对性能的影响 61
4.3.1 HashMap的问题 61
4.3.2 HashMap的结构 62
4.3.3碰撞 64
4.3.4 Hash算法 65
4.3.5题外话:ConcurrentHashMap中的Hash 72
4.3.6 HashMap综述 73
4.3.7均摊 74
4.4算法设计不合理带来的性能问题 78
4.4.1某应用A的现象 78
4.4.2某应用B的现象 78
4.4.3分析 79
4.4.4方案 81
4.4.5验证 82
4.4.6小结 86
4.5综合案例:电商活动页面性能优化 86
4.5.1第一轮:通过APC使QPS提高近3倍 86
4.5.2第二轮:解决消耗CPU资源大户Gzip 92
4.5.3小结 105
第5章 TCP优化 107
5.1 TCP传输原理 108
5.1.1 TCP传输的简要说明 108
5.1.2滑动窗口——接收端流量控制 108
5.1.3拥塞窗口——发送端流量控制 109
5.1.4传统TCP拥塞控制问题 110
5.2 Linux内核升级中的TCP优化技术 110
5.2.1调整接收窗口 111
5.2.2初始拥塞窗口调整(Linux 2.6.38开始支持) 111
5.2.3 Early Retransmit(Linux 3.5开始支持) 112
5.2.4初始RTO调整(Linux 2.6.18开始支持) 114
5.2.5 TFO 114
5.2.6 TSO 115
5.3 TIME WAIT问题案例分析 116
5.3.1问题现象 116
5.3.2问题分析 117
5.3.3问题初步解决 118
5.3.4问题再分析 118
5.3.5问题后记 119
5.4总结 119
第6章DNS优化 120
6.1 DNS基本原理 121
6.1.1 DNS的一些关键术语 121
6.1.2 DNS查询过程 122
6.1.3 NS选择策略和机制 124
6.1.4 DNS扩展协议EDNS 125
6.1.5常用DNS相关命令 126
6.2实战案例:超远距离DNS性能问题分析和优化 130
6.2.1现象描述 130
6.2.2 DNS Lookup耗时长的问题分析 131
6.2.3 DNS解析性能解决方案 133
6.3总结 136
第7章 CDN优化 138
7.1 CDN优化概述 138
7.2 CDN的相关术语 140
7.3从应用看CDN的基本原理 141
7.3.1 CDN基本架构 141
7.3.2 CDN全局调度 141
7.3.3 CDN基本调度方式 142
7.3.4 CDN加速的基本实施流程 145
7.4 CDN优化常见策略 146
7.4.1静态化缓存优化 146
7.4.2动态内容静态边缘化 147
7.4.3动态加速优化 150
7.4.4用户序列优化原理 153
7.4.5域名合并优化 153
7.4.6多级缓存架构优化 154
7.4.7 301.302跳转边缘化访问和多终端边缘化判断 154
7.5 CDN优化实战 155
7.5.1 CDN的不合理架构造成304请求耗时长优化实战 155
7.5.2静态资源命中率优化实战 159
7.5.3 CDN动态加速优化实战 164
7.5.4 CDN静态化的问题和优化实战 171
7.5.5 CDN调度优化实战 178
7.6总结 179
第8章 大型网站性能监控体系 182
8.1监控设计 183
8.1.1应用监控存在的问题 183
8.1.2从问题排查思路看监控的设计 183
8.1.3监控的设计步骤 184
8.1.4监控常见法则总结 187
8.2大型网站性能监控体系设计目标和原则 188
8.2.1准确性 188
8.2.2完整性 189
8.2.3实时性 189
8.2.4细分化 189
8.2.5聚合化 189
8.2.6图表化 190
8.2.7可追溯 190
8.3性能指标和监控项及实现 190
8.4性能监控的关键指标 194
8.4.1应用监控 194
8.4.2系统监控 196
8.5常用监控命令详解 201
第9章 大型网站容量评估 205
9.1容量评估概述 205
9.2容量评估的特点 206
9.3单机峰值QPS的测算 206
9.3.1单机测算方法 207
9.3.2两种常用的引流压力测试方法 207
9.3.3引流压力测试停止时间的判断 208
9.3.4如何避免单机压力测试出现问题 209
9.4大型网站常用的容量评估方法 210
9.4.1二八原则评估法——新业务评估的基本方法 210
9.4.2有历史数据参考的容量评估——GMV线性比例评估法和GMV转化评估法 210
9.4.3流量占比评估法 215
9.5总结 216
第10章 高性能系统架构模式 218
10.1无状态架构 219
10.1.1解决方案一——Session复制 219
10.1.2解决方案二——Session Sticky 220
10.1.3解决方案三——Session集中式存储 220
10.1.4解决方案四——基于浏览器Cookie的无状态架构 222
10.2基于负载均衡器的水平扩展架构 222
10.3基于DNS的负载均衡 224
10.4读写分离架构 224
10.5基于数据水平切分的水平扩展架构 225
10.6缓存架构 228
10.6.1缓存的基本属性 229
10.6.2缓存的分类 229
10.6.3缓存使用常见的问题和误区 230
10.6.4缓存使用场景 231
10.6.5缓存使用规范和原则 232
10.7近端架构 233
10.8异步化架构 234
10.9排队缓冲架构 235
10.10多机房架构 236
10.10.1同城架构 236
10.10.2异地架构 238
10.11基于服务的可扩展架构 240
10.12日结架构 242
10.13热点避免架构 243
第11章 大促保障体系 246
11.1大促保障概述 246
11.1.1大促保障简介 246
11.1.2大促保障整体流程 247
11.2大促保障体系详解 249
11.2.1容量保障体系 249
11.2.2风险保障体系 253
11.2.3组织保障 255
11.2.4运维保障 255
11.2.5中间件保障 256
11.3大促容量峰值保障策略 257
11.4大促风险保障策略 259
11.4.1风险保障概述 259
11.4.2风险保障常见风险 259
11.4.3风险识别和风险分类 260
11.4.4 风险保障策略 263
11.4.5分组隔离策略 265
11.4.6业务降级策略 265
11.4.7监控发现策略 265
11.5大促资金安全保障策略 265
11.5.1常见的资金安全防护策略 265
11.5.2大促资金安全防护 268
11.6大促经验沉淀 268
11.7大促保障实战分析 269
11.7.1机房网络瓶颈问题分析 269
11.7.2集群个体异常造成的容量问题分析 275
11.7.3诡异的网络瓶颈 278
11.7.4多机房压力测试流量不均问题分析 283
11.7.5 Tengine限流案例 291
11.8总结 292
第12章 数据分析驱动性能优化 293
12.1 WebP性能优化案例背景 293
12.1.1 WebP格式开始兴起 294
12.1.2 WebP改造使L-D转化率下降 295
12.2性能优化中的数据分析原理与方法 296
12.2.1数据分析简介 296
12.2.2数据分析之杜邦分析 297
12.2.3数据分析之多维分析 299
12.3通过数据分析来诊断WebP的性能问题 303
12.3.1指标定义 303
12.3.2基于指标树自动诊断WebP的性能问题 305
12.4案例:通过数据分析进行OLAP分析和RT优化 308
12.4.1在线分析系统响应指标基线的定义 308
12.4.2性能问题诊断 309
12.4.3数据的获取及觉察 311
12.4.4方案的推导 313
12.4.5小结 315
12.5通过函数抽象进行性能优化 316
12.5.1优化过程简介 316
12.5.2函数抽象 317
12.5.3统计分析 319
12.5.4小结 321