VMware公司首席架构师亲笔撰写,全方位解读在VMWare vSphere上优化企业级Java应用的最佳技术实践和实用技巧
从计算机硬件体系结构到Java虚拟机的内存管理优化,从内存数据库的设计到整个应用分层的部署,详细讨论Java平台虚拟化和调优的原则、策略和技巧,包含大量实例
现在企业已经不再询问“Java能不能虚拟化”这样的问题,而是“我们能够将虚拟化的Java应用平台扩展到多大?又该如何有效地对其进行调优?”在本书中,顶尖的Java虚拟化专家回答了这些问题,并提供了详尽的技术信息,你可以将这些技术信息用于任何生产或QA/测试环境。
最近9年以来,本书作者一直在虚拟化VMWare自身的企业级应用和300个VMWare重要客户的项目,这些项目的类型和规模各异——从100个JVM到10 000个以上JVM,堆内存从1GB到360GB,其中包括构建在集群JVM上的大数据应用。基于所有这些经验,作者展示了如何成功地划分和优化Java工作负载。
《大规模Java平台虚拟化与调优》包含富有极高价值的优化技巧,可以将这些技巧应用于物理环境、虚拟化环境,或者两者组合的环境之中。你能够学到如何合理地扩展已有的Java应用基础设施,如何为新的应用提供现代化架构,如何进行系统的基准测试并在各个方面提升虚拟化Java的性能。
通过阅读本书,你将学到:
大规模Java平台相关的性能问题,包括合并、弹性和灵活性
Java平台中理论限制和物理限制的技术考量
使用VMWare vFabric SQLFire构建水平的内存数据库,以提升可扩展性和响应时间
使用吞吐/并行GC和并发标记清除(CMS)技术优化大规模Java系统
设计和划分新的Java环境
从物理化部署环境迁移到虚拟化时,设计并划分新的大规模Java平台
为延迟敏感的内存数据库设计并划分Java平台
现实世界中的性能案例:SQLFire与RDBMS对比、基于Spring的Java应用、vFabric SpringTrader、应用层、数据层等
ESXi 3、4.1以及5的性能差异
每类工作负载的最佳实践:架构、性能、设计、大小划分以及高可用性
在负载均衡器层、Web服务器层、Java应用服务器层或DB服务器层识别瓶颈
借助esxtop解决复杂的vSphere Java性能问题
有关性能的FAQ:企业级用户所提问题的答案
更多精彩,点击进入品牌店查阅>>
《大规模Java平台虚拟化与调优》由VMware公司首席架构师亲笔撰写,全方位解读在VMWare vSphere上优化企业级Java应用的最佳技术实践和实用技巧。作者通过丰富的实例,详细讨论分区设置以及大、小规模虚拟化Java平台的调优,可帮助vSphere和Java管理员快速理解并有效运用设计和优化策略。
《大规模Java平台虚拟化与调优》共7章:第1章定义三类大规模Java平台并描述一些技术性考量因素;第2章介绍vFabric SQLFire的特性,详细描述现代化数据平台是如何构造的;第3章探讨如何最好地优化延迟敏感的JVM;第4章探讨设计和划分大规模Java平台的各种方式,包括借助纵向和横向测试确定最佳的Java平台规模;;第5章通过一些性能研究案例,表明虚拟化Java平台可以在一个很大的规模上运行; 第6章介绍将大规模Java应用部署到VMware上的最佳实践,包括架构、性能、设计和规模划分,以及高可用性方面的最佳实践;第7章主要介绍在虚拟化Java平台中帮助你进行监控和问题排查的重要工具。附录中包含很多VMware客户所提出的问题,通读附录有助于读者快速提高技术水平。
译者序
前 言
第1章 大规模Java平台简介1
1.1 大规模Java平台的分类1
1.2 大规模Java平台的趋势与需求2
1.2.1 计算资源合并2
1.2.2 JVM实例合并2
1.2.3 弹性与灵活性3
1.2.4 性能3
1.3 大规模Java平台的技术因素3
1.3.1 Java平台在理论和实际中的限制3
1.3.2 NUMA7
1.3.3 在生产环境中,最为常见的JVM规模13
1.3.4 JVM和VM的水平扩展与垂直扩展13
1.4 本章小结17
第2章 现代化可扩展的数据平台18
2.1 SQLFire的拓扑结构20
2.1.1 客户端/服务器拓扑结构21
2.1.2 端到端拓扑结构23
2.1.3 冗余区23
2.1.4 全球的多点拓扑结构23
2.2 SQLFire特性25
2.2.1 服务器分组27
2.2.2 分区29
2.2.3 冗余31
2.2.4 位置协同32
2.2.5 磁盘持久化33
2.2.6 事务35
2.2.7 缓存插件39
2.2.8 监听器41
2.2.9 writer43
2.2.10 异步监听器44
2.2.11 DBSynchronizer46
2.2.12 SQLF命令与DDLUtils48
2.3 Active-Active架构与现代化数据平台 49
2.4 本章小结52
第3章 大规模Java平台调优53
3.1 GC调优方法58
3.1.1 步骤A:新生代调优58
3.1.2 步骤B:老年代调优62
3.1.3 步骤C:Survivor 空间调优63
3.2 本章小结65
第4章 设计和划分大规模Java平台66
4.1 为虚拟化大规模Java平台设计和划分新环境66
4.1.1 步骤1:建立生产环境下的负载Profile67
4.1.2 步骤2:建立基准67
4.1.3 步骤3:划分生产环境77
4.2 划分vFabric SQLFire Java平台:第二类工作负载78
4.2.1 步骤A:确定实体分组78
4.2.2 步骤B:确定数据Fabric的内存大小81
4.2.3 步骤C:确定模板VM和JVM的大小以及所需的vFabric SQLFire成员数量84
4.2.4 理解HotSpot JVM内部的内存分区 85
4.2.5 理解划分大型VM和JVM时NUMA的影响86
4.2.6 vFabric SQLFire大小划分样例90
4.3 本章小结96
第5章 性能研究97
5.1SQLFire和RDBMS性能研究97
5.1.1性能结果98
5.1.2 结果总结 101
5.2 Olio工作负载运行在tc Server和vSphere上的性能研究101
5.3 SpringTrader性能研究105
5.3.1vSphere应用层和数据层配置107
5.3.2 SpringTrader性能研究结果 110
5.4 ESXi 3、ESXi 4.1和ESXi 5的性能差异111
5.4.1CPU调度改进 111
5.4.2内存增强112
5.5vSphere 5性能提升113
5.6 本章小结114
第6章 最佳实践115
6.1vSphere上企业级Java应用的最佳实践(第一类)117
6.1.1VM规模大小以及配置的最佳实践117
6.1.2VM vCPU的最佳实践118
6.1.3 VM内存划分的最佳实践119
6.1.4 VM时间同步最佳实践122
6.1.5 垂直扩展性的最佳实践122
6.2 水平可扩展性、集群以及池的最佳实践123
6.2.1 分层之间配置的最佳实践124
6.2.2 vSphere的最佳实践126
6.3 SQLFire最佳实践以及vSphere上SQLFire的最佳实践(第二类JVM工作负载的最佳实践)128
6.3.1 SQLFire最佳实践129
6.3.2 在vSphere上vFabric SQLFire的最佳实践131
6.4 第三类工作负载的最佳实践136
6.5 GC策略选择138
6.5.1 IBM GC可选方案139
6.5.2 Oracle jRockit GC策略140
6.6 本章小结140
第7章 监控与故障排除141
7.1 开启请求支持的Ticket142
7.2 通过vCenter收集指标143
7.3 借助esxtop排查vSphere问题的技术146
7.4 Java问题排除指导148
7.4.1 排查Java内存问题150
7.4.2 排查Java线程竞争的问题151
7.5 本章小结152
附录FAQ153
术语表170