【问题标题】:Jboss application poor performanceJboss 应用程序性能不佳
【发布时间】:2016-07-19 22:14:20
【问题描述】:

我有一个在 Jboss 5.1 中运行的应用程序,它每隔一周就会出现性能问题,我们必须重新启动应用程序以使其恢复正常。上图是在应用程序在高峰时段运行时捕获的。在查看其他领域(如基础设施和网络)之前,我试图从应用程序的角度了解是否有改进的余地

Graph generated through jvisualvm which shows heap usage

这里是堆大小设置 我有这个应用程序

JAVA_OPTS="${JAVA_OPTS} -Xms3072m -Xmx6144m -XX:PermSize=512m -XX:MaxPermSize=2048m -Dorg.jboss.resolver.warning=true -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000 -Dsun.lang.ClassLoader.allowArraySyntax=true "
JAVA_OPTS="$JAVA_OPTS -verbose: gc -Xloggc:/test/log/gc.log -XX: +PrintGCDetails -XX:+PrintGCDateStamps"
  1. 为什么,从图中,应用程序甚至只使用了 3G 内存 虽然我给了 6G 作为最大内存?
  2. 我的 GC 设置是否正确?我可能从不同的地方复制了 服务器,我如何确保我有正确的 GC 设置 申请?
  3. 如果我从 设置它如何确定何时必须运行 GC?
  4. 上次我们不得不重新启动应用程序时,我进行了堆转储,并且 在 jvisualvm 中加载它,但我不知道在堆中寻找什么 转储(我不是开发人员)有人可以告诉在堆中寻找什么 转储以及如何改进它
  5. 我们还能做些什么来改进应用程序 我们在图表和 GC 设置中看到的性能

【问题讨论】:

    标签: java garbage-collection jboss5.x heap-size


    【解决方案1】:

    以下是我最好的能力回答你的观点:

    1. 目前,您的应用程序对 3GB 堆感到满意,不需要增加它。据推测,它会一直这样做,然后每隔一周就失败一次。
    2. GC 性能调优就是答案。你需要监控和调整,只有当你知道你在调整什么时。然后测量,记录。冲洗并重复。
    3. 它会在需要时运行 GC(当它的年轻代空间不足时)。它衡量了许多事情并考虑了各种设置来决定何时进行 GC。它会在没有任何帮助的情况下发生,但您可以告诉它更多全局图景,GC 试图建立它以调整自身。
    4. 您可以通过多种方式对其进行切片和切块。如此大量的信息产生了许多观点。您可以查看哪些类使用最多的内存,这可能表明问题出在哪里(我假设内存泄漏或其他一些系统资源,如文件句柄未释放)。见这里for basic use of VisualVM
    5. 您需要知道导致问题的原因。通常最好的办法是修复有问题的应用程序,而不是将负担转移到 GC。如果您有资源泄漏,无论如何它迟早会打击到您。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-30
      • 2020-07-17
      • 2016-07-14
      相关资源
      最近更新 更多