2013-03-26 146 views
0

我们有一个在JBoss 7.1.1中运行的Java EE应用程序,我们必须在VirtualMachines(如VMWare ESXI)中运行它。VMWare ESXI虚拟机中的jBoss缓慢

问题是,当我们在VM中运行我们的应用程序时,性能下降了大约50%。

看起来像GC变得疯狂......据我所知,当GC运行时,它比“正常”更长的时间比正常情况更长,并且同时阻止应用程序。

有没有其他人有过这样的经历?任何提示,调整或我可以遵循的光线?

在此先感谢。


编辑

  • JVM具有XMX和X毫秒= 1Gb的
  • VM已经4GB内存
  • Ubuntu服务器64
  • 甲骨文JVM 64
+0

没有更多的细节你的配置看起来很难帮助你。什么是jvm的内存配置?虚拟机有多少内存?什么样的操作系统(32位vs 64位)什么样的jvm(供应商和arch)。没有这个信息的问题太笼统了。 – ctomc 2013-03-27 13:48:48

+0

对不起,我编辑添加信息的问题。 – caarlos0 2013-03-27 14:03:56

回答

0

我要说的是,在将您的应用程序移动到配置您发布的应用程序之前,它在32位系统上运行tem和32bit jvm并使用相同的jvm参数。

特技是你用64位java移动到64位,但仍然为你的应用程序分配相同数量的堆大小,现实中发生的事情是,你的应用程序现在有一半的可用内存。 64位jvm上的每个对象的大小是32位jvm的两倍。

给定的配置,你有我建议几个解决方案:

鉴于您的应用程序不会已经分配了超过1.3G,认为通过安装32位jvm并使用-Xms1300m -Xmx1300m运行可以获得最佳性能。

你可以更进一步,并拥有32位Linux 32位Linux安装。 64位jvm仅在需要超过1.3G堆的情况下才有用,否则会增加太多开销。

你也可以用

-verbose:gc -XX:+PrintGCDetails 

运行的JVM会告诉你什么是与GC发生的事情,这可以进一步帮助你调整你的JVM。

相关问题