`
blackhost
  • 浏览: 14322 次
社区版块
存档分类
最新评论

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

阅读更多
我的意思是,单个JVM的内存数不能大于1.5G,那么对于很多服务器,例如有32G内存的小型机,部署一个应用内存上的浪费岂不是太大了,根本无法完全发挥它的优势嘛!

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

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

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


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

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

像这种问题,又如何处理呢?难道不用集群?
分享到:
评论
14 楼 houniao 2009-10-03  
xiaoyu 写道
可能楼主还想在服务器安装一个魔兽世界玩玩,所以就。。。。。要32位的OS。


人家说的服务器32位的,莫非你能把32位字长的cpu虚拟成64位?

PS. 难道非得把内存全用完了才爽吗? 如果觉得jdk的最大内存还不够,不能结合其它cache手段,比如memcache来做呢。这样不也减轻了程序对jdk的内存占用。另外的32位os能支持这么多内存吗?
13 楼 puroc 2009-09-30  
直接换成64位的JDK。也不建议把一个JVM设置的过大。

1)在一个主机上部署多个应用是可以的。有的服务器,一个进程是根本没有办法完全利用系统资源的。所以可以部署多个,来提供对系统资源的利用。
2)定时器在每个JVM中都有,肯定会出现你说的问题。可参考quartz框架的集群方案。
12 楼 zhxp791008 2009-09-30  
首先jvm的内存肯定不能开得太大,太大反而会导致应用暂停问题。
集群是个好的方案,在一台物理机器上开启几个应用。session的复制、fail恢复等,如果在你的应用中有定时器东东,建议两种方案:
1、定时器单独一个应用,只部署一个。
2、这个定时任务加入到数据的job中搞定,
我认为第二种方案更好。
11 楼 xiaoyu 2009-09-30  
可能楼主还想在服务器安装一个魔兽世界玩玩,所以就。。。。。要32位的OS。

10 楼 someone 2009-09-30  
LZ的想法是可行的,曾经使用过类似部署方法。
服务器操作系统是Win2003(32位),内存16G。
采用Apache+Tomcat,Apache和Tomcat的连接使用mod_jk,不复制Session。
其中Tomcat开4个实例,因为是Session sticky,所以可以正常使用session。对于应用程序级别的共享资源,尽量避免,对于必须使用的情况,则设置独立于Web的服务,比如缓存等。
9 楼 sohuexe 2009-09-30  
the_definitive_guide_to_terracotta_cluster_the_jvm_for_spring_hibernate_and_pojo_scalability 这本书或许不错,要的话留言!
8 楼 lz_cleaner 2009-09-30  
上64位,直接搞定,何必去找那个麻烦。
7 楼 lnaigg 2009-09-30  
企业级应用来说,集群是一个重点话题,解决方案多如牛毛。

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

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

应用设计的初期就应该考虑到应用的规模,而对应做出集群的考虑。如果你的应用就定位在单服务器上跑的,那考虑那么多干啥。
6 楼 pipilu 2009-09-30  
不知道你这个集群的作用是什么,是为了负载均衡么?那什么会出现向数据库写入重复数据的情况呢?
如果觉得服务器还可以更多的利用,那就在上面多跑几个应用呗,多几个jvm进程。
5 楼 whaosoft 2009-09-30  
mwmw 写道
确切的说对这个不是很了解,但是Windows已经提供了相应的能够扩展内存的解决方案(AWE),Linux下肯定也有这样的解决方案。

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

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


是呀 java的gc挺讨厌的
4 楼 treblesoftware 2009-09-30  
ZL,难道非得装32位的系统?装个64位的系统,64位的JVM不就行了?
3 楼 mwmw 2009-09-29  
确切的说对这个不是很了解,但是Windows已经提供了相应的能够扩展内存的解决方案(AWE),Linux下肯定也有这样的解决方案。

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

但是一个很重要的问题是GC,如果你把内存开的很大,到时候Full GC的时候pause的时间会很长,反而会很影响性能。也是要考虑的。
2 楼 humaeks 2009-09-29  
楼上请注意楼主的32位机

数据库的定时器可以利用数据库锁定解决。把那条计划任务从待执行变成执行中,可以保证只有一个jvm拿到。
1 楼 joyfun 2009-09-29  
单个内存不超过1.5G估计是上个世纪的事情了
现在的64位jdk可以支持到2T
如果应用到集群上 定时器之类的东西肯定要修改一下代码 用任务调度来实现

相关推荐

    开发测试环境Docker及JVM内存限制部署方案

    该文档描述了开发测试环境中Docker及JVM内存限制部署方案

    JVM内存溢出问题解析

    二是物理解决,增大物理内存,然后通过调整 JVM 的参数来调整内存的大小。 JVM 内存溢出类型有两种:java.lang.OutOfMemoryError: PermGen space 和 java.lang.OutOfMemoryError: Java heap space。PermGen space ...

    Kubernetes集群之微服务JVM内存监控

    原文链接:https://blog.csdn.net/m0_37814112/article/details/119028528 说明:Kubernetes集群之微服务JVM内存监控,prometheus服务yaml文件

    JVM内存空间分配笔记

    ### JVM内存空间分配详解 #### 一、JVM内存模型概览 ...综上所述,理解JVM内存分配机制对于Java开发者来说至关重要,这不仅有助于编写高效、稳定的代码,还能在遇到性能瓶颈时快速定位问题并进行优化。

    JVM内存管理白皮书

    在这份由Sun Microsystems公司出版的《JVM内存管理白皮书》中,我们可以找到关于Java虚拟机(JVM)内存管理的详细...通过这份白皮书的学习,读者将能够深入理解JVM内存管理的复杂性,并掌握处理内存问题的有效方法。

    jvm内存监控工具使用

    ### JVM内存监控工具详解 #### 引言 Java Virtual Machine (JVM) 是运行 Java 应用程序的核心组件,其性能直接影响应用的响应速度和稳定性。JVM 的内存管理是性能优化的关键,尤其是在高并发环境下,合理的内存...

    idea插件JVM内存工具JProfiler11

    《深入理解IDEA插件JProfiler11:高效优化JVM内存》 在Java开发领域,高效运行和优化JVM内存是至关重要的。IntelliJ IDEA(简称Idea)作为广受欢迎的Java集成开发环境,提供了一系列强大的工具来帮助开发者进行性能...

    jvm 内存分析文档

    理解JVM内存结构和内存分配机制对于避免内存溢出(OutOfMemoryError)、提升程序性能、减少垃圾回收开销至关重要。开发者应关注内存配置、对象生命周期管理以及适当的垃圾回收策略,以优化应用程序的性能和稳定性。

    JVM内存参数详解以及配置调优

    本资源详细讨论了 JVM 内存参数的配置和调优,包括 JVM 的结构、内存管理、垃圾回收、堆和非堆内存、内存分配和限制等方面,为开发人员和运维人员提供了一份详细的指南,以帮助他们更好地理解和优化 JVM 的性能。

    java获得jvm内存大小

    在Java编程语言中,了解和控制JVM(Java虚拟机)的内存管理是至关重要的,尤其是在性能调优、资源管理和避免内存泄漏等方面。本文将深入探讨如何在Java中获取JVM内存大小,包括堆内存的总量、最大值以及剩余空间,并...

    mat(mac)---jvm内存分析工具

    MAT提供了一种追踪对象分配路径的能力,这有助于理解对象是如何被创建、如何在内存中移动,以及为何它们不能被垃圾回收。 3. **支配树分析**: 通过支配树视图,MAT能显示哪些对象支配着其他对象,这样可以快速...

    JVM内存模型

    JVM内存模型是Java虚拟机(JVM)中的一种内存管理机制,它将内存区分为永久区内存(Permanent space)和堆内存(heap space)两大块。永久区内存用于存放加载的Class类级对象,如class本身、method、field等等,而堆...

    JVM内存配置优化

    #### 一、理解JVM内存模型 在进行JVM内存配置优化之前,我们需要了解Java虚拟机(JVM)的内存结构。Java的逻辑内存模型大致分为几个部分: 1. **堆内存(Heap)**:主要用于存储对象实例、数组等引用类型的数据。在...

    (二)MATJVM 内存分析工具.MAT JVM 内存分析工具.MAT JVM 内存分析工具.

    MAT JVM内存分析工具可以帮助开发者深入理解Java虚拟机(JVM)的内存管理机制,通过分析堆内存快照来识别内存消耗异常的情况。 首先,MAT提供了丰富的视图来帮助用户查看内存状态,例如“概述”视图可以快速了解堆...

    jvm内存分析工具mat

    总的来说,MAT是Java开发人员必备的工具之一,它能有效地帮助我们解决JVM内存问题,提高应用的稳定性和效率。通过熟练掌握MAT的使用,开发者可以更好地管理和优化Java应用的内存,从而提升整体的系统性能。

    JVM内存日志

    总结,通过理解JVM内存结构,熟练运用`jmap`工具,结合`dump.txt`文件的分析,我们可以有效地诊断和优化Java应用程序的内存使用,提高系统性能。在实际工作中,定期监控和分析JVM内存日志是确保应用稳定性和高效运行...

    JVM 内存结构及配置总结

    Java虚拟机(JVM)内存结构与配置是Java开发者必须理解的重要概念,它涉及到程序的运行效率和稳定性。本文将详细解析JVM的内存结构、内存分配策略以及相关的配置参数。 1. **JVM内存结构** JVM内存主要分为以下几...

    JVM内存模型详解

    jvm内存模型,jvm脑图,jvm调优,jvm垃圾回收算法,jvm垃圾回收器,逃逸算法等总结。

    Jvm对象内存分配理解

    Jvm 对象内存分配理解 Jvm 对象内存分配是 Java 虚拟机(JVM)中一个非常重要的过程,它决定了对象的创建、分配和初始化的整个过程。下面将详细探讨 Jvm 对象内存分配的整个过程。 一、对象的创建 Jvm 对象的创建...

Global site tag (gtag.js) - Google Analytics