Memory 充分利用jboss的24G内存

Memory 充分利用jboss的24G内存,memory,jboss,Memory,Jboss,我们有一个运行jboss的solaris sparc 64位。它有24G内存。但是由于JVM的限制,我只能设置为JAVA_OPTS=-server-Xms256m-xmx360m-XX:MaxPermSize=3600m。 我不知道确切的帽子。但是如果我设置为4000m,java将不喜欢它 是否有任何方法可以充分或更有效地使用此24G mem 如果我在一台机器上使用集群,它是否稳定?我听说它需要重写部分代码。您不能使用完整的物理内存,JVM需要最大的内存trunck,请尝试使用java-Xmxn

我们有一个运行jboss的solaris sparc 64位。它有24G内存。但是由于JVM的限制,我只能设置为JAVA_OPTS=-server-Xms256m-xmx360m-XX:MaxPermSize=3600m。 我不知道确切的帽子。但是如果我设置为4000m,java将不喜欢它

是否有任何方法可以充分或更有效地使用此24G mem


如果我在一台机器上使用集群,它是否稳定?我听说它需要重写部分代码。

您不能使用完整的物理内存,JVM需要最大的内存trunck,请尝试使用java-Xmxnnnnm-version来测试机箱上的最大可用内存。

所有32位进程都限制为4G字节的可寻址内存。2^32==4吉比特

如果您可以将jboss作为一个64位进程运行,通常只需将-d64添加到JAVA_OPTS中,那么您可以通过增加线程和对象池来优化jboss,以利用该内存。正如其他人所提到的,您可能会遇到可怕的垃圾收集暂停,但您可以通过一些负载测试和正确选择垃圾收集算法来找出如何避免这些暂停

如果必须作为32位进程运行,那么是的,至少可以。在您的情况下,有三个选项:区域、虚拟接口和端口绑定

Solaris区域 因为您运行的是solaris,所以创建虚拟服务器并在每个服务器中安装jboss相对比较容易,就像在真正的服务器中一样

多宿 通常通过添加虚拟接口为要运行的每个jboss实例配置一个额外的IP地址,但也可以安装额外的NIC,并使用-b启动选项将每个jboss实例绑定到自己的IP地址

这是最复杂/脆弱的选项,但至少它不需要更改操作系统

是否将jboss实例实际配置为集群取决于您的应用程序。一个好处是能够使用http会话故障切换。一个缺点是,如果您的应用程序不稳定或在一段时间内趋于无响应,则会出现集群合并问题


你提到你的申请很慢;在你走得太远之前,试着了解你的瓶颈在哪里。使用jvisualvm或jstat来观察您是否经常进行垃圾收集。如果没有,那么添加堆内存或额外的jboss实例可能无法解决性能问题。

我不建议仅仅因为您有-Xmx而不是因为您需要它而将-Xmx设置为24G,很可能您会遇到巨大的gc暂停。不过,将其设置为高于4G应该是可能的。您确定您有一个64位JVM吗?您是只增加-Xmx还是同时增加-XX:MaxPermSize?增加后者没有多大意义,您只需要一个更大的堆。那么您认为如何在一台物理服务器中群集2或3个节点?如果i-XX:MaxPermSize=3600,会发生什么?我想是max,所以不会有什么害处。是吗?我知道JVM有一个限制,不管是32位还是64位。我的问题是:一般来说,如何在JBoss4.0服务器上充分利用我的24G内存。现在,总有大约16G是免费的。另一方面,系统速度非常慢。我可以调整jboss服务器以在一定程度上提高性能。但我想知道是否有一些系统级的方法可以做到这一点。非常有用。我们正在使用IPMP by 2 NIC。但是我们没有按照您的建议运行2实例。solaris区域仅适用于solaris 10。不幸的是,我们使用的是solaris 5.10。顺便说一下,我不认为32位可以使用4G内存。它只适用于jvm以外的常规进程。Sunos5.10是uname报告Solaris 10的方式;您可能希望使用区域重新访问。4gig的限制是总内存;您的-Xm设置正在设置jvm堆大小,它只是总内存的一部分。