新書推薦:
《
世界巨变:严复的角色(王中江著作系列)
》
售價:HK$
110.0
《
宋初三先生集(中国思想史资料丛刊)
》
售價:HK$
217.8
《
天生坏种:罪犯与犯罪心理分析
》
售價:HK$
97.9
《
新能源材料
》
售價:HK$
63.8
《
人工智能与大数据:采煤机智能制造
》
售價:HK$
96.8
《
新民说·逝去的盛景:宋朝商业文明的兴盛与落幕(上下册)
》
售價:HK$
173.8
《
我从何来:自我的心理学探问
》
售價:HK$
119.9
《
失败:1891—1900 清王朝的变革、战争与排外
》
售價:HK$
85.8
|
編輯推薦: |
从基础知识到全新技术,从系统开发到运维,195张图解讲透性能!
1.专业团队撰写,开发、测试、运维工程师值得拥有!
本书由实战经验丰富的Oracle高级顾问执笔,全面地介绍了系统性能的方方面面,涉及服务器、CPU、内存、存储、网络,等等。
2.理论结合实际,满载实用技巧!
书中列举了丰富的实例以及在实际开发过程中会出现的各种场景,向读者传授了有用的实战技巧。
3.图文直观,由浅入深,讲解细致!
结合直观的插图,从算法等基础知识讲起,到虚拟化和云计算等环境下的性能优化,由浅入深,便于理解。
|
內容簡介: |
本书由有着丰富的系统开发和运维经验的Oracle高级顾问执笔,详细解说了系统性能的相关知识。从性能的概念讲起,由浅入深,全面介绍了性能分析的基础知识、实际系统的性能分析、性能调优、性能测试、虚拟化环境下的性能分析、云计算环境下的性能分析等内容。书中列举了丰富的实例,并结合直观的插图,向读者传授了有用的实战技巧。另外,因为系统性能和系统架构密切相关,所以读者在学习系统性能的过程中还能有效地学到系统架构的相关知识。
|
關於作者: |
小田圭二(作者)
日本Oracle株式会社咨询部门经理。在解决性能问题方面有着丰富的经验,著有《图解OS、存储、网络:DB的内部机制》(絵で見てわかるOSストレージネットワーク~データベースはこう使っている)、《图解Oracle的机制》(絵で見てわかるOracleの仕?Mみ)等多部著作。
?_松谷仁(作者)
日本Oracle株式会社高级首席顾问。曾在Emprix公司(美国本部)就职,为SIer和一般企业提供压力测试、性能管理等方面的咨询服务。之后就职于日本Oracle株式会社,还负责为使用Java、WebLogic、Exalogic等中间件产品的客户提供咨询服务。
平山毅(作者)
在东京理科大学理工学部上学期间成为Sun Site用户,专业是计算机科学和统计学。曾在日本某大型互联网公司就职,目前在世界上第1大的云计算供应商做架构师和咨询顾问,负责了多个大规模的国际性案件。喜欢的技术是Oracle、VCE、AWS。
冈田宪昌(作者)
曾在某IT公司做基础设施的设计、搭建和运维工作,后就职于日本Oracle株式会社,负责Oracle产品的设计和PM支持、DBA支持等。目前在某大型虚拟化软件供应商做咨询顾问和研发技术经理,负责为虚拟化基础设施和云计算的设计、运维等提供咨询服务。
|
目錄:
|
第1章 性能的基础知识1
1.1 学习性能所必需的知识……2
1.2 算法的优缺点与学习方法……4
1.2.1 什么是算法……4
1.2.2 算法的基础……5
1.2.3 学习算法的窍门……7
1.3 算法的应用实例及性能的差异……8
1.3.1 日常生活中算法的例子……8
1.3.2 对性能的影响程度……9
1.3.3 评价算法的指标……11
学习信息科学的重要性……13
1.4 响应与吞吐的区别……14
系统工程师学习编程的重要性……16
1.5 算法的具体例子……16
1.5.1 数组与循环处理……16
1.5.2 链表与循环处理……19
1.5.3 树与查找……21
1.5.4 散列算法……25
1.5.5 队列……28
1.5.6 栈……32
1.5.7 排序(快速排序)……34
1.5.8 缓存①(回写)……36
1.5.9 缓存②(直写)……38
DMBS是数据结构与算法的宝库……38
1.5.10 锁与性能……40
【高级篇】锁的机制是如何实现的……42
【高级篇】性能优劣不能只看正常情况……44
第2章 性能分析的基础 45
2.1 性能分析从测量开始……46
2.2 什么是必要的性能信息……46
2.2.1 “分段查找”原则……46
2.2.2 性能信息的3种类型……48
2.2.3 系统的模型与性能故障时的运作情况……50
2.2.4 数据的种类及分析的窍门……53
2.3 性能分析中的重要理论……54
2.3.1 等待队列理论的术语……55
2.3.2 计算等待队列的平均等待时间……56
2.3.3 使用率和等待队列的例子……57
2.3.4 实际上可以获取哪些信息……59
需要定期确认性能吗?……61
2.4 OS的命令……61
2.4.1 sar……62
2.4.2 vmstat……64
时间同步非常重要……66
2.4.3 ps……66
2.4.4 netstat……68
2.4.5 iostat……70
2.4.6 top……73
2.4.7 数据包转储(wireshark、tcpdump等)……74
2.4.8 pstack……76
2.4.9 系统调用(strace等)……78
2.4.10 Profiler……80
2.4.11 Windows环境……81
第3章 实际系统的性能分析 85
3.1 WebAP服务器与JavaC应用程序……86
3.1.1 Web服务器的访问日志……86
3.1.2 应用程序、AP服务器的日志……87
3.2 DB服务器的性能测量……90
3.2.1 DBMS的性能测量的原理……90
3.2.2 性能分析告一段落……92
批处理的性能测量……93
3.3 存储性能分析的思路……94
3.3.1 存储的相关术语……94
3.3.2 存储性能分析的思路:重视IOPS……96
3.4 网络性能分析的思路……100
性能故障数据应该保存多久?……102
3.5 调查原因……102
3.5.1 初学者容易掉入的陷阱……103
3.5.2 应有的态度……106
获取各种性能信息的时间要吻合吗?……108
3.5.3 实际的调查流程……108
性能分析的理想工具……111
第4章 性能调优 113
4.1 性能与调优……114
4.1.1 现实中的性能……114
4.1.2 在现场要保持“大局观”……117
4.2 性能调优的准则……118
4.2.1 设定既不能太粗也不能太细,要刚刚好……119
4.2.2 调优要循序渐进……120
4.2.3 通过重复使用来提速……121
4.2.4 汇总处理(集中、Piggyback)……121
4.2.5 提高速度与实现并行……123
4.2.6 纵向扩展与横向扩展……124
4.2.7 局部性……124
编译器会与RDBMS走上同一条道路吗?……125
4.3 现场可以使用的技巧……126
4.3.1 省略循环,减少投接球……126
4.3.2 访问频率高的数据存放入键值存储或散列表中……127
4.3.3 访问频率高的数据放在使用位置附近……127
4.3.4 把同步变成异步……128
4.3.5 带宽控制……130
4.3.6 LRU算法……131
4.3.7 分割处理或者细化锁的粒度……131
4.3.8 使用不丢失的回写缓存……132
4.3.9 使用多层缓存……132
4.3.10 使用巨帧和高速网络……132
4.3.11 负载均衡、轮询……133
4.3.12 关联性、绑定、粘滞会话……134
4.3.13 写时复制……135
4.3.14 日志……136
4.3.15 压缩……137
4.3.16 乐观锁……137
4.3.17 列式数据库……138
4.3.18 服务器的性能设置中,初始值=最大值?……139
4.4 实际业务中碰到的性能问题……139
4.4.1 性能比较的参考数据……139
4.4.2 缓存命中率并不一定要高……140
4.4.3 存储的调优方针……141
4.4.4 虽然容量足够,但还是添加磁盘……141
4.4.5 从性能角度看文件分割……142
4.4.6 90百分位……143
4.4.7 读取与写入的比例……143
4.5 调优的例子……144
4.5.1 例1:2层循环中select语句的执行……144
4.5.2 例2:偶尔出现性能下降……147
等待队列的前面发生了什么?……149
第5章 性能测试 151
5.1 性能测试的概要……152
5.1.1 项目工程中的性能测试……152
5.1.2 不同职责的性能测试相关人员……153
5.2 常见的失败情况:9种反面模式……156
5.2.1 不能在期限内完成……156
5.2.2 性能很差!解决不了性能问题……157
5.2.3 由于没有考虑到环境差异而导致发生问题……158
5.2.4 压力场景设计不完备导致发生问题……159
5.2.5 没有考虑到缓冲、缓存的使用而导致发生问题……159
5.2.6 没有考虑到思考时间而导致发生问题……160
5.2.7 报告内容难以理解导致客户不能认同……162
5.2.8 客户因为存在不信任感而不能认同……163
5.2.9 测试很花时间……164
5.3 性能测试的种类……167
5.3.1 实施的周期……168
5.3.2 狭义的性能测试……169
5.3.3 临界测试(临界性能、回退性能、故障测试)……169
5.3.4 基础设施性能测试……174
5.3.5 应用程序单元性能测试……178
5.3.6 耐久测试……179
5.3.7 关联领域……180
5.4 项目工程中考虑的性能测试……181
5.4.1 需求定义……181
5.4.2 项目规划……186
5.4.3 【基本设计】选择系统……187
5.4.4 【基本设计】性能测试环境……188
5.4.5 【基本设计】其他与性能设计相关的事项……191
5.4.6 【性能测试设计】测试计划的细节……192
5.4.7 【性能测试设计】人员配备与联络体制……194
5.4.8 【基础设施集成测试】基础设施性能测试……195
5.4.9 【集成测试】多并发运行测试……197
5.4.10 【系统测试】压力测试、临界测试、耐久测试……197
5.4.11 【运维测试】性能监控测试、故障测试……198
5.4.12 【交付】性能测试结果的验收报告……198
5.4.13 【运维】初期运行确认……199
5.5 性能测试的课题与必要的技巧……200
5.5.1 性能预估能力……200
5.5.2 高效的反复实施能力……202
5.5.3 Oracle Application Testing Suite的使用效果……203
第6章 虚拟化环境下的性能 209
6.1 虚拟化与性能……210
6.2 虚拟化的概要……211
6.2.1 什么是服务器虚拟化……211
6.2.2 虚拟化的种类……212
硬件辅助虚拟化……214
6.3 服务器虚拟化的主要技术(过载使用)……215
6.3.1 CPU的虚拟化技术……215
6.3.2 内存的虚拟化技术……218
6.4 虚拟化环境下性能的相关知识与分析方法……225
6.4.1 性能分析的工具……225
6.4.2 CPU的性能管理……226
6.4.3 内存的性能管理……231
6.4.4 存储的性能管理……234
还没使用DRS吗?……237
6.4.5 网络的性能管理……240
延迟灵敏度功能……243
第7章 云计算环境下的性能 245
7.1 云计算环境下性能的相关知识……246
7.1.1 云计算环境下性能会变差吗……246
7.2 云计算与本地部署的差异……247
7.2.1 云计算的定义……248
7.2.2 从云计算的特点来看与本地部署环境的不同……248
云计算实现的终极全球化……251
7.2.3 云计算的实现形态……251
混合结构的成本管理就是使用实物期权实现的投资组合管理……252
7.2.4 从云计算的服务模式来看其与本地部署的差别……253
云计算环境中可以把盈亏平衡点图形化(独自SaaS提供的最优费用模型)……254
7.2.5 把握资源的变动因素与固定因素……254
7.3 云计算环境的内部结构与最佳应用程序架构……262
7.3.1 集中式?分布式?……262
7.3.2 紧耦合?松耦合?……264
7.3.3 SOAP?REST?……265
能够把握抽象化的云计算环境的美国人——图与想象的重要性……268
7.3.4 前端的分布式处理:网络的访问方法……269
7.3.5 后端的分布式处理:数据存储的知识(从ACID到BASE)……271
7.3.6 提高TCP通信的速度……272
7.3.7 提高对象存储的速度……272
7.3.8 C语言?Java语言?还是脚本语言?……273
7.3.9 云计算环境下高性能服务的架构……274
7.3.10 开放迁移与云计算迁移……277
7.3.11 推测云计算的内部结构……278
7.4 云计算环境下性能分析的方法……278
7.4.1 获得云计算环境的基准数据的价值与不断进化的性能值……278
性能领域是理科工程师的特权?……280
7.4.2 Web系统的基本分析方法……281
7.4.3 批处理系统的基本分析方法……282
7.4.4 云计算的自动扩展功能……283
7.4.5 解析云计算环境中的复杂信息的统计方法……284
7.5 云计算环境中开发阶段的思维方式……285
7.5.1 估算(基本设计)……286
7.5.2 性能测试(系统测试)……287
7.5.3 项目管理……287
云计算环境下,经营者也需要关注详细的性能数据吗?……288
7.6 云计算环境中运维阶段的思维方式……289
7.6.1 容量管理……289
阈值设置与系统安全系数、标准化的价值……290
7.6.2 故障发生时的降规模容量运维……292
7.6.3 生命周期与更新……293
云计算实现的DevOps中性能调优的高效化……294
参考文献……296
作者简介……297
|
內容試閱:
|
不知读者是否还能回忆起自己第一次碰到性能问题时的场景,可能当时会嘀咕:明明是我细心打磨的程序,怎么会有性能问题呢?而当找出问题的症结时,自己也会一拍大腿这个地方怎么当时就没考虑到呢?的确,性能问题就是这样在程序的各个地方考验着开发者。
随着大数据、高并发越来越多地出现在开发人员的用户场景下,开发人员也越来越关注程序的效率问题。小到一个字符串的拼接,大到各个系统的协调,在实现功能之余,性能的优劣也必须纳入评估范围。性能调优具有以一敌百的功效。性能好的程序与性能差的程序在执行效率、资源消耗方面有几倍甚至几百倍的差距。这对于公司而言是不小的成本差距。
然而,当开发人员想要学习一下性能调优的方法时,很多时候找到的却是对枯燥的命令行或工具的说明书般的介绍。日本的技术书一直有着生动活泼、通俗易懂的口碑,本书亦是如此。作者从实践经验出发,不仅对各种数据结构、算法进行了说明,还介绍了系统命令等。甚至从软件工程的角度,阐述了性能调优在工程中的作用及重要性。针对火热的虚拟化技术和云平台,作者也进行了特别的说明。便于技术人员在钻研技术的同时,从软件工程的整体来看待性能调优。这就是本书与其他同类图书的不同之处。
本书并不是简单的Linux 性能调优手册,也不是针对性能测试工程师的教材,而是一本让对性能还一知半解的初学者快速了解性能调优在程序、系统、工程中所扮演的角色及基础方法的书。如果想从普通工程师向高级工程师甚至架构师方向发展的话,性能调优是一个必须跨过的坎。而要想快速地对性能调优有一个整体认识,本书应该是不错的参考。
本书并不是一本严肃的技术书,书中还列举了各种实际开发过程中会出现的场景,例如在性能出现问题时,操作系统、数据库管理员之间互相踢皮球等。相信当读者读到这些段落时,都会会心一笑。
|
|