贾斯汀·穆雷(Justin Murray)早五分钟就开始了他的演讲[“虚拟化Java应用程序:最佳实践”(21860)],并说虚拟化已经到了人们不再需要担心利用虚拟化的地步。 他说他的演讲大约有一年的历史,是一个团队的工作。

相对较小的房间(Nikko Carmel I / II)挤满了人,似乎只靠近站立的房间(坐席帮助每个人就座)。 早上的策略性主题演讲稍有结束,人们在试图离开时陷入了宴会厅,而本次演讲的提早开始导致很多人迟到,这有些分散注意力。 我不怪演讲者提早开始,因为他有很多很好的信息要讲。 最大的问题是后勤延迟迫使人们离开已经超过计划的结束时间的主题演讲。

Muray具有七个虚拟化最佳实践,只有前两个(虚拟机内存和虚拟CPU /物理CPU /线程)是Java特有的。 大多数人在存储区域而不是处理/ CPU区域犯了虚拟化错误。 Murray指出,Java开发人员无需执行任何操作即可使用虚拟化。 他们不需要更改任何代码,也不需要更改任何设置。

  1. 虚拟机内存
  2. 中央处理器
  3. 磁盘I / O
  4. 网络I / O
  5. 计时表
  6. 微观基准
  7. 监控与管理

一个易于理解的虚拟化Java应用程序的初始最佳实践是:“ Java堆需要始终保持在物理内存中。” 他还建议使用大内存页。 不要将那么多虚拟机塞入物理内存,以使每个VM的总最大堆空间使用的内存多于物理内存中可用的内存。

默里的第一个正式最佳实践是“ 1。 虚拟机内存:调整虚拟机的内存大小以留出足够的空间。” 他指出,有一个公式可以计算要使用的内存量,以考虑该内存的许多需求。 他说,此公式已记录在白皮书和同事的书中。 Murray说,虽然对于一个小型应用程序可能有太多的JVM内存,但他通常赞成为JVM分配大量的内存以用于虚拟化。 Murray还建议使用VMware Distributed Resource Scheduler(DRS) 。 他的另一个广告宣传是针对Java的vFabric弹性内存(EM4J),它与VMware的称为“ tc服务器 ”的“ Tomcat之味”一起提供。 Murray表示,尽管在大多数情况下都担心Java中内存的过度使用,但在使用tc服务器和EM4J时并不需要。 Murray还使用了esxtop 。

解决了内存问题后,Murray转向了主要的CPU。 他从对线程和虚拟CPU的观察开始本节。 他的幻灯片中写道:“ Java线程可随时在一个vCPU上执行”,而“ vCPU则可随时在一个物理CPU上调度。” Murray补充说,他与之合作的大多数客户正在使用四个虚拟CPU,但现在最多支持32个虚拟CPU。线程通常在监视器或套接字上等待释放,并且Murray认为大多数Java应用程序并未完全使用theads。 通常,Murray倾向于使用“对您的应用程序来说实用的虚拟CPU数量最少”。 Murray表示,使用命令行选项-Xgcthreads等同于说:“我比JVM更了解。”

Murray表示虚拟化不再害怕I / O。 他说,从Java虚拟化的角度来看,网络I / O比磁盘I / O更重要。 Murray指出,交换对物理机上的VM不利,对于虚拟机上的VM同样不利。

Murray提供的一个更好的建议应该被更普遍地理解(但似乎不是),它只是对自己的应用程序进行基准测试,并且仅基于特定应用程序的基准测试来做出决策。 他补充说,使用应用程序的“代表性子集”还不够好。

为了进行监视和管理,Murray建议从每台计算机开始一个JVM进程,然后逐步扩展到虚拟机中所需的JVM数量,一次确定一个上限。 他在幻灯片上的最后一个项目符号建议使用vCenter或esxtop来查看Java应用程序的哪些部分正在消耗资源。

Murray的“简短故事”是,对于虚拟化而言,Java开发人员通常不需要调整JVM垃圾回收策略,线程池大小或JDBC连接池大小,而对于物理服务器则不需要进行任何调整。 唯一应使用的命令行选项是用于指定大页面。

Murray讨论了使用Capacity Planner进行大约30天的收集,以了解哪些候选人是虚拟化的良好候选人。 Murray指出,您不能凭空创建硬件,因此在这种情况下,虚拟化将无法​​帮助大量使用硬件。

Murray总结说:“ Java中间件和应用程序应该虚拟化。”

Murray在VMware工作,VMware 在VMware最佳实践指南上提供了企业Java应用程序 。 Murray在演讲中引用了VMware的技术白皮书 。

参考: JavaOne 2011:虚拟化Java应用程序: JCG合作伙伴的 最佳实践   实际事件启发博客中的达斯汀·马克思。

翻译自: https://www.javacodegeeks.com/2012/02/virtualizing-your-java-applications.html

虚拟化Java应用程序:最佳实践(JavaOne 2011)相关推荐

  1. javaone_虚拟化Java应用程序:最佳实践(JavaOne 2011)

    javaone 贾斯汀·穆雷(Justin Murray)早五分钟就开始了他的演讲["虚拟化Java应用程序:最佳实践"(21860)],并说虚拟化已经到了人们不再需要担心利用虚拟 ...

  2. 编写高性能Java代码的最佳实践

    编写高性能Java代码的最佳实践 摘要:本文首先介绍了负载测试.基于APM工具的应用程序和服务器监控,随后介绍了编写高性能Java代码的一些最佳实践.最后研究了JVM特定的调优技巧.数据库端的优化和架 ...

  3. Java Bean Validation 最佳实践

    <h1 class="postTitle"><a id="cb_post_title_url" class="postTitle2& ...

  4. javafx11 最佳实践_JavaFX移动应用程序最佳实践,第2部分

    javafx11 最佳实践 警告:我在这里给出的提示适用于JavaFX Mobile的当前版本,该版本是JavaFX 1.1 SDK的一部分. 在将来的版本中,行为将发生变化,上述工件的当前不良性能将 ...

  5. JavaFX移动应用程序最佳实践,第2部分

    警告:我在这里给出的技巧对于JavaFX Mobile的当前版本是正确的,该版本是JavaFX 1.1 SDK的一部分. 在将来的版本中,行为将改变,上述工件的当前不良性能将被优化或至少得到显着改善. ...

  6. 高性能Java代码的最佳实践

    高性能Java代码的最佳实践 前言 在这篇文章中,我们将讨论几个有助于提升Java应用程序性能的方法.我们首先将介绍如何定义可度量的性能指标,然后看看有哪些工具可以用来度量和监控应用程序性能,以及确定 ...

  7. javafx11 最佳实践_JavaFX移动应用程序最佳实践,第1部分

    javafx11 最佳实践 到现在为止,所有对JavaFX感兴趣的人都会知道,JavaFX Mobile发行了不久 前. 可以肯定的是,这真是令人难以置信. 我感到非常筋疲力尽,在发行期间我什至没有精 ...

  8. JavaFX移动应用程序最佳实践,第1部分

    到现在为止,所有对JavaFX感兴趣的人都会知道,JavaFX Mobile发行了不久 前. 可以肯定的是,这真是令人难以置信. 我感到筋疲力尽,在发行期间我什至没有精力去写博客-- 但是到目前为止, ...

  9. java查询枚举_查找Java枚举的最佳实践

    查找Java枚举的最佳实践 我们有一个REST API,客户端可以在其中提供表示Java Enums中服务器上定义的值的参数. 因此,我们可以提供一个描述性错误,我们将此valueOf(..)方法添加 ...

最新文章

  1. 《学习之道》第四章学习语言和记忆痕迹
  2. Valgrind 使用简单说明
  3. 1、tomcat目录及端口规划实践
  4. 机器学习初学者手抄本:数学基础、机器学习经典算法、统计学习方法等
  5. 1036:A×B问题
  6. ChinaMM竞赛:低光照人脸检测
  7. Maven实战(四)——基于Maven的持续集成实践
  8. MongoDB数据库导出导入迁移
  9. Docker使用小结(二)Docker仓库 Docker数据管理 端口映射与容器互联
  10. 【路径规划】基于matlab任意架次植保无人机作业路径规划【含Matlab源码 322期】
  11. 计算机考试祝福,考试前说的祝福语汇编35句 参加考试前的祝福语
  12. 用Python输出100以内的质数
  13. java compar_Java中Comparable和Comparator
  14. java微信主动推送消息_利用java开发微信实现微信主动推送消息实例
  15. SSH密匙key介绍
  16. 曹雪芹诗歌中的鸿蒙,红楼一梦开辟相痴鸿蒙诗歌
  17. 客户端与服务器的理解
  18. [转]浅说软件需求分析
  19. CSU 1506 酷酷的单词
  20. 吕鑫老师VS2015系列教程资源

热门文章

  1. 文本替换sed+字段处理cut,join+awk重新编排字段
  2. fegin 参数丢失_许多参数和丢失的信息
  3. yeoman_具有Spring Boot和Yeoman的单页Angularjs应用程序
  4. 浏览器总是跳转到缓存界面_跳转到企业缓存之前要考虑的事项
  5. sap寄售退货单_多个退货单
  6. unwind neo4j_Neo4j 2.1:传递节点ID与UNWIND
  7. Spring Boot应用程序的“本地服务”
  8. java自定义方法参数注解_Java方法中的参数太多,第1部分:自定义类型
  9. java知识回顾_Java7 –回顾
  10. JVM体系结构:JVM中的执行引擎