论坛首页 Java企业应用论坛

能否通过集群部署来突破32位机上的JVM内存限制,我的理解请大家指正。

浏览 6069 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (19) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-09-29  
我的意思是,单个JVM的内存数不能大于1.5G,那么对于很多服务器,例如有32G内存的小型机,部署一个应用内存上的浪费岂不是太大了,根本无法完全发挥它的优势嘛!

而且,在我们的应用中,有的时候是可能突破1.5G限制的,尽管很少会出现,即使出现了也可以通过代码去解决,但是我总觉得眼睁睁得看着32G的内存却用不上,感觉可惜了。

后来我想,集群部署是不是可以解决这个问题,通过把应用部署在4-5个虚拟服务器上,每个受管服务器都有一个1.5G的JVM,这样4个话不久有6G的JVM可用空间了吗?

不知道我的理解对不对?有没有其他的好法子呢?欢迎大家参与讨论并指正!


如果用集群部署,假设我的系统使用的Spring+Hibernate技术,那么当我把应用部署到集群上后,除Session是状态复制外,其他的操作会不会也被复制。

比如,我在应用中写一个定时写数据库的定时器,如果部署到集群上,假设有4个集群服务器,我的定时器是12:00启动,那么到12:00时,会不会所有的受管服务器都启动定时器,实际部署中,我发现有这个问题,就是写了4份数据到数据库中了。

像这种问题,又如何处理呢?难道不用集群?
   发表时间:2009-09-29  
单个内存不超过1.5G估计是上个世纪的事情了
现在的64位jdk可以支持到2T
如果应用到集群上 定时器之类的东西肯定要修改一下代码 用任务调度来实现
0 请登录后投票
   发表时间:2009-09-29  
楼上请注意楼主的32位机

数据库的定时器可以利用数据库锁定解决。把那条计划任务从待执行变成执行中,可以保证只有一个jvm拿到。
0 请登录后投票
   发表时间:2009-09-29  
确切的说对这个不是很了解,但是Windows已经提供了相应的能够扩展内存的解决方案(AWE),Linux下肯定也有这样的解决方案。

还有一种是JVM级别的cluster (Terra-cotta),通过这种集群也能很好的利用内存。

但是一个很重要的问题是GC,如果你把内存开的很大,到时候Full GC的时候pause的时间会很长,反而会很影响性能。也是要考虑的。
0 请登录后投票
   发表时间:2009-09-30  
ZL,难道非得装32位的系统?装个64位的系统,64位的JVM不就行了?
0 请登录后投票
   发表时间:2009-09-30  
mwmw 写道
确切的说对这个不是很了解,但是Windows已经提供了相应的能够扩展内存的解决方案(AWE),Linux下肯定也有这样的解决方案。

还有一种是JVM级别的cluster (Terra-cotta),通过这种集群也能很好的利用内存。

但是一个很重要的问题是GC,如果你把内存开的很大,到时候Full GC的时候pause的时间会很长,反而会很影响性能。也是要考虑的。


是呀 java的gc挺讨厌的
0 请登录后投票
   发表时间:2009-09-30  
不知道你这个集群的作用是什么,是为了负载均衡么?那什么会出现向数据库写入重复数据的情况呢?
如果觉得服务器还可以更多的利用,那就在上面多跑几个应用呗,多几个jvm进程。
0 请登录后投票
   发表时间:2009-09-30  
企业级应用来说,集群是一个重点话题,解决方案多如牛毛。

网络、硬件、内存、中间件、应用各个级别都有集群方案,而各种方案都有好处也有技术限制的。

做集群更多要考虑是如何提高应用性能的扩展能力,所以LZ就不要只盯着JVM这点内存限制了,就算用了64位jvm也有可能要做集群。

应用设计的初期就应该考虑到应用的规模,而对应做出集群的考虑。如果你的应用就定位在单服务器上跑的,那考虑那么多干啥。
0 请登录后投票
   发表时间:2009-09-30  
上64位,直接搞定,何必去找那个麻烦。
0 请登录后投票
   发表时间:2009-09-30  
the_definitive_guide_to_terracotta_cluster_the_jvm_for_spring_hibernate_and_pojo_scalability 这本书或许不错,要的话留言!
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics