【发布时间】: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 会导致前端在发生中断时报告几秒钟的中断。
我的问题是:
- 我是否应该继续增加堆,希望这能解决问题?
- 是否有其他参数(例如各种比率)可能有助于解决此问题?
- 我是否应该冒着死亡的风险并建议我们将 Bitbucket 当作瓦罐来抛弃? :-)
【问题讨论】:
标签: java tomcat garbage-collection bitbucket-server