查看: 4923|回复: 6

[原创] 使用OC4J的多JVM来提高系统处理能力

[复制链接]
论坛徽章:
22
授权会员
日期:2005-11-27 17:58:592012新春纪念徽章
日期:2012-02-13 15:10:582012新春纪念徽章
日期:2012-02-13 15:10:582012新春纪念徽章
日期:2012-02-13 15:10:582012新春纪念徽章
日期:2012-02-13 15:10:582012新春纪念徽章
日期:2012-02-13 15:10:58马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14
发表于 2009-4-28 13:08 | 显示全部楼层 |阅读模式
最近由于项目的需要,使用了OC4J中的多JVM的特性来解决应用系统的处理能力问题。

对于在Oracle Application Server中使用多JVM的特性,Oracle一些专家在他们的博客中也有谈到,对于使用多JVM还是多OC4J实例的问题,Angelo Santagata在他的博客中阐述了自己的观点:
Multiple JVMs:
The processes share the same configuration for the entire container (not just for the JVM parameters).
Same applications, same container configuration etc. This is a great way of scaling symmetrically to better utilize the CPUs and still only having to manage one container. Multiple OC4Js:
You can individually control all of the container configurations, have different applications deployed etc. You can use this strategy in
combination with multiple JVMs to scale while at the same time having a heterogeneous environment wrt. nr. of applications deployed, container configurations etc.


设置多个JVM,对于同一个应用和相同的配置,这样可以最大程度的利用CPU的处理能力;而如果有多个应用,他们分别独立控制自己的配置,因此可以使用多个OC4J的策略再加上多JVM的特性可以充分扩展异构环境的系统。
在Oracle Application Server的管理控制台中,可以查看各应用所启用的JVM数量(以前没有怎么玩过Weblogic,不知道是否也有这样的设置)


可以通过应用的服务器选项来修改每个应用对应的JVM实例个数


那怎么样来决定JVM的个数呢?上图中设置了soa的JVM实例数为2,实际的应用中,Angelo Santagata的建议是根据如下的规则来计算:
  • 保证最少2个JVM个数,目的是为了处理JVM实例出错
  • 然后使用CPU的总数减1后乘与1.2后取整得出的就是最初略的JVM实例个数
  • 最后根据CPU/操作系统/应用的不同进行必要的压力测试来进行JVM实例个数的调整

所以对于我项目上面有16CPU的系统来说,2+(round(15*1.2)) = 20 , 所以按照Angelo Santagata的建议可以在这服务器上面启动20个JVM实例。

设置了多个JVM实例之后,可以通过jdk的各种JVM工具来监控和分析JVM的情况,如:jps, jstat, jmap, jstatd, jconsole,还有jdk1.6之后集成的开源工具visualVM。
后续将介绍使用jdk的jstat, jmap和visualVM工具来监控JVM的状态,并通过它们来解决Out of Memory(OOM)问题。


来自Oracle Seeker,Oracle探索者的文章
本文地址: [url]http://www.oracleseeker.com/index.php/using_multiple_jvm_in_oc4j_application[/url]
论坛徽章:
62
马上加薪
日期:2014-02-19 11:55:142011新春纪念徽章
日期:2011-02-18 11:43:332010广州亚运会纪念徽章:田径
日期:2011-02-17 18:03:352011新春纪念徽章
日期:2011-01-25 15:42:562011新春纪念徽章
日期:2011-01-25 15:42:332011新春纪念徽章
日期:2011-01-25 15:42:152011新春纪念徽章
日期:2011-01-25 15:41:502011新春纪念徽章
日期:2011-01-25 15:41:012010广州亚运会纪念徽章:三项全能
日期:2010-11-15 13:36:51ITPUB9周年纪念徽章
日期:2010-10-08 09:34:02
发表于 2009-4-29 17:50 | 显示全部楼层
建议采用多oc4j instance来解决,多jvm负载我测试的时候很不均衡

使用道具 举报

回复
论坛徽章:
22
授权会员
日期:2005-11-27 17:58:592012新春纪念徽章
日期:2012-02-13 15:10:582012新春纪念徽章
日期:2012-02-13 15:10:582012新春纪念徽章
日期:2012-02-13 15:10:582012新春纪念徽章
日期:2012-02-13 15:10:582012新春纪念徽章
日期:2012-02-13 15:10:58马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14
 楼主| 发表于 2009-5-2 21:06 | 显示全部楼层

回复 #2 wzy25 的帖子

我需要共享很多配置的信息,如果采用多实例就需要单独维护这些信息并保证一致。

另外你如何测试多JVM负载均衡呢?

使用道具 举报

回复
论坛徽章:
20
ITPUB元老
日期:2005-02-28 12:57:002012新春纪念徽章
日期:2012-02-13 15:11:182012新春纪念徽章
日期:2012-02-13 15:11:182012新春纪念徽章
日期:2012-02-13 15:11:182012新春纪念徽章
日期:2012-02-13 15:11:18马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:142012新春纪念徽章
日期:2012-02-13 15:11:18
发表于 2009-5-4 14:49 | 显示全部楼层
我们项目上也用多个JVM的,是解决负荷的重要手段。问题是如何监控JVM呢?从OS里面有没有啥手段的?

使用道具 举报

回复
论坛徽章:
62
马上加薪
日期:2014-02-19 11:55:142011新春纪念徽章
日期:2011-02-18 11:43:332010广州亚运会纪念徽章:田径
日期:2011-02-17 18:03:352011新春纪念徽章
日期:2011-01-25 15:42:562011新春纪念徽章
日期:2011-01-25 15:42:332011新春纪念徽章
日期:2011-01-25 15:42:152011新春纪念徽章
日期:2011-01-25 15:41:502011新春纪念徽章
日期:2011-01-25 15:41:012010广州亚运会纪念徽章:三项全能
日期:2010-11-15 13:36:51ITPUB9周年纪念徽章
日期:2010-10-08 09:34:02
发表于 2009-5-5 18:32 | 显示全部楼层
原帖由 suixing2k66 于 2009-5-2 21:06 发表
我需要共享很多配置的信息,如果采用多实例就需要单独维护这些信息并保证一致。

另外你如何测试多JVM负载均衡呢?


放到一个cluster里面就可以了,大部分信息就自动同步了

使用道具 举报

回复
论坛徽章:
62
马上加薪
日期:2014-02-19 11:55:142011新春纪念徽章
日期:2011-02-18 11:43:332010广州亚运会纪念徽章:田径
日期:2011-02-17 18:03:352011新春纪念徽章
日期:2011-01-25 15:42:562011新春纪念徽章
日期:2011-01-25 15:42:332011新春纪念徽章
日期:2011-01-25 15:42:152011新春纪念徽章
日期:2011-01-25 15:41:502011新春纪念徽章
日期:2011-01-25 15:41:012010广州亚运会纪念徽章:三项全能
日期:2010-11-15 13:36:51ITPUB9周年纪念徽章
日期:2010-10-08 09:34:02
发表于 2009-5-5 18:34 | 显示全部楼层
原帖由 降龙十八掌 于 2009-5-4 14:49 发表
我们项目上也用多个JVM的,是解决负荷的重要手段。问题是如何监控JVM呢?从OS里面有没有啥手段的?


查看输出日志,通过os的监控工具监控线程即可。

使用道具 举报

回复
论坛徽章:
2
ITPUB9周年纪念徽章
日期:2010-10-08 09:32:26ITPUB十周年纪念徽章
日期:2011-11-01 16:24:04
发表于 2012-7-19 15:12 | 显示全部楼层
Foglight 监控OC4j 9.0.3/9.0.4等旧系统版本

自2004年左右, Oracle 推出自己的应用服务器 Oracle® Application Server Containers for J2EE 10g 核心是 OC4J,当时的版本是OC4J  9.0.3, OC4J 9.0.4等。
国内的一些客户采用了该解决方案,并用于关键业务。OC4j 9.0.3/9.0.4等,使用的是JDK1.3或 JDK1.4.

如何实现对这些旧系统的应用监控? 可以用Foglight实现.

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

DTCC2020中国数据库技术大会 限时8.5折

【架构革新 高效可控】2020年6月4日~6日第十一届中国数据库技术大会将在北京隆重召开。

大会设置2大主会场,20+技术专场,将邀请超百位行业专家,重点围绕数据架构、AI与大数据、传统企业数据库实践和国产开源数据库等内容展开分享和探讨,为广大数据领域从业人士提供一场年度盛会和交流平台。

http://dtcc.it168.com


大会官网>>
TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 
京ICP备09055130号-4  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表