精华帖 (0) :: 良好帖 (0) :: 新手帖 (19) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-09-29
而且,在我们的应用中,有的时候是可能突破1.5G限制的,尽管很少会出现,即使出现了也可以通过代码去解决,但是我总觉得眼睁睁得看着32G的内存却用不上,感觉可惜了。 后来我想,集群部署是不是可以解决这个问题,通过把应用部署在4-5个虚拟服务器上,每个受管服务器都有一个1.5G的JVM,这样4个话不久有6G的JVM可用空间了吗? 不知道我的理解对不对?有没有其他的好法子呢?欢迎大家参与讨论并指正! 如果用集群部署,假设我的系统使用的Spring+Hibernate技术,那么当我把应用部署到集群上后,除Session是状态复制外,其他的操作会不会也被复制。 比如,我在应用中写一个定时写数据库的定时器,如果部署到集群上,假设有4个集群服务器,我的定时器是12:00启动,那么到12:00时,会不会所有的受管服务器都启动定时器,实际部署中,我发现有这个问题,就是写了4份数据到数据库中了。 像这种问题,又如何处理呢?难道不用集群? 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-09-29
单个内存不超过1.5G估计是上个世纪的事情了
现在的64位jdk可以支持到2T 如果应用到集群上 定时器之类的东西肯定要修改一下代码 用任务调度来实现 |
|
返回顶楼 | |
发表时间:2009-09-29
楼上请注意楼主的32位机
数据库的定时器可以利用数据库锁定解决。把那条计划任务从待执行变成执行中,可以保证只有一个jvm拿到。 |
|
返回顶楼 | |
发表时间:2009-09-29
确切的说对这个不是很了解,但是Windows已经提供了相应的能够扩展内存的解决方案(AWE),Linux下肯定也有这样的解决方案。
还有一种是JVM级别的cluster (Terra-cotta),通过这种集群也能很好的利用内存。 但是一个很重要的问题是GC,如果你把内存开的很大,到时候Full GC的时候pause的时间会很长,反而会很影响性能。也是要考虑的。 |
|
返回顶楼 | |
发表时间:2009-09-30
ZL,难道非得装32位的系统?装个64位的系统,64位的JVM不就行了?
|
|
返回顶楼 | |
发表时间:2009-09-30
mwmw 写道 确切的说对这个不是很了解,但是Windows已经提供了相应的能够扩展内存的解决方案(AWE),Linux下肯定也有这样的解决方案。
还有一种是JVM级别的cluster (Terra-cotta),通过这种集群也能很好的利用内存。 但是一个很重要的问题是GC,如果你把内存开的很大,到时候Full GC的时候pause的时间会很长,反而会很影响性能。也是要考虑的。 是呀 java的gc挺讨厌的 |
|
返回顶楼 | |
发表时间:2009-09-30
不知道你这个集群的作用是什么,是为了负载均衡么?那什么会出现向数据库写入重复数据的情况呢?
如果觉得服务器还可以更多的利用,那就在上面多跑几个应用呗,多几个jvm进程。 |
|
返回顶楼 | |
发表时间:2009-09-30
企业级应用来说,集群是一个重点话题,解决方案多如牛毛。
网络、硬件、内存、中间件、应用各个级别都有集群方案,而各种方案都有好处也有技术限制的。 做集群更多要考虑是如何提高应用性能的扩展能力,所以LZ就不要只盯着JVM这点内存限制了,就算用了64位jvm也有可能要做集群。 应用设计的初期就应该考虑到应用的规模,而对应做出集群的考虑。如果你的应用就定位在单服务器上跑的,那考虑那么多干啥。 |
|
返回顶楼 | |
发表时间:2009-09-30
上64位,直接搞定,何必去找那个麻烦。
|
|
返回顶楼 | |
发表时间:2009-09-30
the_definitive_guide_to_terracotta_cluster_the_jvm_for_spring_hibernate_and_pojo_scalability 这本书或许不错,要的话留言!
|
|
返回顶楼 | |