【问题标题】:Java - PS OldGen full, PS Survivor Space empty, PS Eden Space filling and GC'ingJava - PS Old Gen 已满,PS Survivor Space 为空,PS Eden Space 填充和抄送
【发布时间】:2016-08-18 23:22:12
【问题描述】:

我在 Ubuntu 14.04.5 LTS、内核 3.13.0-88-generic 上的 tomcat 8.0.24 和 Java 1.8.0 31-b13(64 位)上运行 Atlassian Bitbucket。 VM 有 16GB 内存和 4 个虚拟 CPU

我修改的唯一java参数是堆参数,目前是-Xms3072m -Xmx4096m。我没有更改比率或其他堆参数

我正在使用探针查看内部结构。重启后 GC 在 PS Eden Space 和 PS Survivor Space 上按预期工作,PS Old Gen 逐渐填充到 2.67GBytes 并发生完整的 GC。

然而,经过几天的预期行为,PS Old Gen 填充但没有发生 GC,然后 PS Survivor SPace 仍然是空的,只有 PS Eden Space 填充和 GC'ing。在观察到此行为后的某个时间,响应时间变慢,并最终因内存不足(堆)错误而崩溃。

我一直在逐渐增加堆空间,但我敏锐地意识到它现在非常大,并且完整的 GC 会导致前端在发生中断时报告几秒钟的中断。

我的问题是:

  1. 我是否应该继续增加堆,希望这能解决问题?
  2. 是否有其他参数(例如各种比率)可能有助于解决此问题?
  3. 我是否应该冒着死亡的风险并建议我们将 Bitbucket 当作瓦罐来抛弃? :-)

【问题讨论】:

    标签: java tomcat garbage-collection bitbucket-server


    【解决方案1】:

    我建议通过 support.atlassian.com 联系我们的支持团队,他们可以协助调整您的实例。

    增加堆大小可能会加剧问题而不是解决问题,因此我们最好调查一下它发生的原因。

    【讨论】:

    • 是的,我知道向 Java 扔内存不一定会产生预期的效果,这就是我逐渐增加堆的原因。它经常用完堆。
    猜你喜欢
    • 2012-06-03
    • 2013-05-15
    • 2016-07-26
    • 1970-01-01
    • 2013-01-04
    • 2016-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多