SpringOne 2GX 2012 回放:大型 Java 应用的虚拟化与调优,从 Spring 和 Java 到 Spring 和 Akka

新闻 | Pieter Humphrey | 2013 年 4 月 9 日 | ...

大型 Java 应用的虚拟化与调优

本次会议分享了许多在 vSphere 上运行 Java 的经过生产验证的方法。涵盖了如何为大规模部署调整 JVM 和 VM 的大小。会议将有一个专门章节介绍 GC 调优,并展示如何使用在过去 15 年 JVM 调优实际现场经验中开发的 GC 配方来调优各种 JVM。

本次会议讨论了三个关键趋势和相关的调优技术。关键趋势包括:整合、弹性和灵活性以及性能

整合 许多客户发现他们的中间件部署已经激增,并且伴随着更高的成本成为管理上的挑战。我们看到客户普遍倾向于将虚拟化作为减少服务器实例数量的一种方式。同时,客户也利用整合的机会来合理化为特定负载提供服务所需的中间件组件数量。中间件组件最常运行在 Java 虚拟机 (JVM) 中,观察到的规模从 100 个到数千个 JVM 实例不等,为 JVM 实例整合提供了许多机会。因此,中间件虚拟化提供了两次整合的机会——第一次是整合服务器实例,第二次是整合 JVM 实例。这一趋势影响深远,因为地球上的每一个 IT 部门都在考虑整合带来的成本节约。一家酒店行业的客户进行了服务器资源的整合,同时整合了许多堆小于 1GB 的较小 JVM。他们将这些小于 1GB 的较小 JVM 中的许多整合成了两类,一类是 4GB 的,另一类是 6GB 的。他们以这样的方式进行整合,使得应用程序可用的净总 RAM 量与原始 RAM 量相等,但 JVM 实例数量减少。他们做到这一切的同时提高了性能并保持了良好的 SLA。由于他们必须管理的 JVM 实例数量减少,并且环境得到优化,从而轻松实现了 SLA,他们的管理成本也大大降低。
另一家保险行业的客户也达到了与上述客户相同的效果,此外还能够在开发和 QA 环境中超量分配 CPU,以节省第三方软件许可成本。另一方面,有时我们会遇到客户出于合理的业务需求,要求一个应用程序对应一个 JVM,或一个业务线对应一个 JVM。在这种情况下,您无法真正整合 JVM 实例,因为这会导致一个业务线的应用程序生命周期与另一个业务线混杂。然而,虽然这些客户无法通过 JVM 整合消除额外的 JVM 实例而获益,但他们确实可以更充分地利用服务器硬件上可用的计算资源,这些资源在非虚拟化环境中原本会利用不足。

弹性和灵活性 具有季节性需求的应用越来越普遍。例如,我们的许多客户会运行各种营销活动,从而为他们的应用带来季节性流量高峰。借助 VMware,您可以通过在需要时自动配置新的虚拟机和中间件组件来处理这种流量突增,然后在负载平息后自动关闭这些 VM。此外,在不造成服务中断的情况下更改更新/修补硬件的能力对于支持云时代规模和正常运行时间的中间件至关重要。VMware VMotion 使您能够在无需停止应用程序或 VM 的情况下移动 VM。仅凭这种灵活性,在管理大规模中间件部署时,中间件的虚拟化就已物有所值。一家金融领域的客户,每天处理数百万笔交易,他们经常使用 VMotion 来安排硬件升级,而无需任何停机时间。否则,这将对其业务造成昂贵的计划停机。

性能 客户经常报告虚拟化后中间件平台性能有所提升。性能提升部分归因于客户在虚拟化项目中通常会更新的硬件。由于强大的 VMware hypervisor,性能也有一定的提升。最近一位报告性能大幅提升的客户提供了以下证言

“通过我们的 OrderExpress 项目,我们升级了中间件服务、商务、门户、WCM、服务层、DB2 数据库;从 AIX 迁移到 Linux;在 VMware 上进行虚拟化;将应用程序移至三层 DMZ;将我们的交易量提高了 150% 以上;并添加了显着的新功能,极大地改善了客户体验。同时更改如此广泛的技术组件是一项巨大的挑战。然而,通过使用 VMware vSphere 和额外的架构更改,我们成功地将性能提高了 300% 以上;将成本降低了数百万;提高了安全性、可用性和可伸缩性;并且我们计划继续发展此应用程序,以保持每年超过 30% 的增长。”

– Jeff Battisti,Cardinal Health 高级企业架构师

在本次会议中,我将展示小型和大型 JVM 中间件组件的实际 JVM 和 VM 大小。还将详细介绍我多年来开发的 GC 调优配方,该配方已证明可以处理从 4GB 到 88GB+ 及更高的 JVM 堆大小。当然,内存数据库的引入推动了使用这些更大 JVM 的趋势,因此我们将讨论如何最佳地调优 JVM、VM 以及部署它们的硬件平台。

我认为大小调整问题是我们客户群中最常被问到的问题,因此我计划在本次会议期间重点讨论它。



关于演讲者

Emad Benjamin

Emad Benjamin

Emad Benjamin 在 IT 行业工作了二十年。他毕业于卧龙岗大学,获得电气工程学士学位。职业生涯早期,他是一名 C++ 软件工程师,1997 年转而使用 Java 进行编程,此后一直专注于 Java。在过去七年里,他的重点是 VMware vSphere、vFabric GemFire 和 SQLFire 上的 Java。Emad 自 2005 年起一直在 VMware 工作,是《Enterprise Java Applications Architecture on VMware》一书的作者。Emad 之前曾在 VMworld、SpringOne 和 Open World 上就 Java 虚拟化主题发表演讲。

了解更多关于 Emad 的信息 »



 

从 Spring + Java 到 Spring + Akka - 发现之旅

基于 Actor 的并发模型是一种范式转变。什么是范式转变?

科学主导理论中基本假设或范式的改变。范式转变使简单的想法难以理解。尽管 Actor 模型是一个简单而具有革命性的想法,但程序员很难看到其实际的好处和用法。类似地,Scala 编程语言在简化基于 Actor 的设计方面带来了很多优势,但也带来了一种新的编码风格。解决这个问题的一种可能方法是根据旧范式来评估新范式。在本次演示中,我们将采用一个基于 Spring 的现有 Web 应用程序,并逐步使用 Actor 和 Scala 来实现它。我们将对新想法持怀疑和审慎态度,但同时也会保持开放心态。我们将利用 Spring 的知识来学习基于 Actor 的并发模型。同时,我们将学习 Actor、Scala 的最佳实践以及如何将它们与 Spring Framework 结合使用。



关于演讲者

Nilanjan Raychaudhuri

Nilanjan Raychaudhuri

Nilanjan 是 Typesafe 的一名顾问和培训师。他于 2000 年开始他的职业生涯,作为一名软件开发人员,使用面向对象编程语言。Nilanjan 曾与 IBM、ThoughtWorks 和 LivingSocial 合作过,在 Java/JEE、Ruby、Groovy 以及 Scala 中管理和开发软件解决方案方面积累了丰富的经验。自从接触到 Scala 这门美妙的语言以来,他就对用 Scala 编程充满热情。目前,他利用业余时间从事 scala-webmachine 开源项目(restful 资源框架)的工作。过去,Nilanjan 还参与了其他开源项目和库。在 Typesafe,他主要负责教授和设计 Scala 和 Play 课程,并帮助客户采用这些技术。Nilanjan 喜欢在各种会议上通过演讲分享他的经验。他也是《Scala in Action》一书的作者。

了解更多关于 Nilanjan 的信息 »

Josh Suereth

Josh Suereth 是 Typesafe 的一名高级软件工程师,也是《Scala In Depth》一书的作者。自从 2007 年接触到这门美妙的语言以来,他就一直是 Scala 的爱好者。他于 2004 年开始职业生涯,作为一名软件开发人员,最初接触 C++、STL 和 Boost。大约在同一时间,Java 热潮正在蔓延,他的兴趣也转向了 Web 托管的分布式 Java 解决方案,以帮助卫生部门发现疾病爆发——从 EJB 到 Hibernate/Spring,甚至还有一些 Applets。他于 2007 年首次将 Scala 引入到他的公司代码库中,此后不久他就被 Scala 热潮感染,开始为 Scala IDE、maven-Scala-plugin 和 Scala 本身贡献代码。2009 年,他开始撰写《Scala In Depth》一书,该书为在日常应用中使用 Scala 提供了实用支持。如今,Josh 是多个 Scala 开源项目的作者,包括 Scala 自动化资源管理库、PGP sbt 插件,同时还为 Scala 生态系统的关键组件(如 maven-Scala-plugin)做出了贡献。他目前在 Typesafe Inc. 的工作涵盖了从构建 MSI 到分析性能问题等各种任务。Josh 经常通过文章和演讲分享他的专业知识。

了解更多关于 Josh 的信息 »





获取 Spring 新闻通讯

订阅 Spring 新闻通讯,保持联系

订阅

领先一步

VMware 提供培训和认证,助您快速进步。

了解更多

获取支持

Tanzu Spring 在一个简单的订阅中提供 OpenJDK™、Spring 和 Apache Tomcat® 的支持和二进制文件。

了解更多

即将举行的活动

查看 Spring 社区所有即将举行的活动。

查看全部