【问题标题】:jBoss slowness in a VMWare ESXI Virtual MachineVMWare ESXI 虚拟机中的 jBoss 缓慢
【发布时间】:2013-03-29 08:45:34
【问题描述】:

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

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

似乎 GC 疯了......据我所知,当 GC 运行时,它需要更长的时间 比正常“结束”,同时阻塞应用程序。

其他人有过这样的经历吗?我可以遵循任何提示、调谐或灯光吗?

提前致谢。


编辑

  • JVM 有 Xmx 和 Xms = 1Gb
  • VM 有 4Gb RAM
  • Ubuntu 服务器 64
  • oracle JVM 64

【问题讨论】:

  • 如果没有更多详细信息,您的配置看起来将很难为您提供帮助。 jvm的内存配置是什么? VM有多少内存?什么样的操作系统(32 位 vs 64 位)什么样的 jvm(供应商和架构)。没有这个信息问题就太笼统了。
  • 对不起,我编辑添加信息的问题。

标签: jboss7.x vmware


【解决方案1】:

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

技巧是您使用 64 位 java 迁移到 64 位,但仍然为您的应用程序分配了相同数量的堆大小,实际上发生的情况是您的应用程序现在拥有的可用内存是以前的一半。 64 位 jvm 上的每个对象的大小都是 32 位 jvm 的两倍。

根据您的配置,我建议几个解决方案:

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

您可以更进一步,安装 32 位 linux 并安装 32 位 VM。 64 位 jvm 仅在您需要超过 1.3G 的堆时才有用,否则只会增加太多开销。

你也可以用

运行 jvm
-verbose:gc -XX:+PrintGCDetails

这将向您展示 GC 发生了什么,这可以进一步帮助您调整 jvm。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-06
    • 1970-01-01
    • 2020-07-27
    • 2021-06-14
    • 2019-11-12
    • 2017-06-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多