【发布时间】:2014-08-27 04:21:43
【问题描述】:
我们正在生产环境中运行 HBase HMaster 进程。通常日志文件中有很多日志。但是对于特定的周期,没有任何记录,我们认为 gc 发生了。正如预期的那样,gc 发生在那个时候,但不是整个时期。
例如,gc 从 32:24 开始,持续 25.53 秒。但我从 32:06 到 32:49 没有收到任何日志。我想知道gc之前发生了什么。它似乎也“停止了世界”。
如果它的进程正在运行,我确信 HMaster 会写日志。与CPU时间有关吗?怎么解决?
【问题讨论】:
-
@shekharsuman:在哪里提到 system.gc?
-
@Nazgul-对不起,只是
garbage collector! -
@tobe:这是一个一致的模式吗?每次您看到日志停止时,您会在 GC 日志中找到适当的暂停,然后出现几秒钟的停电?我不会担心基于日志写入活动的几秒钟的停电。更好的办法是监控实例并查看是否有线程阻塞。
-
@Nazgul 是的,它是一致的。 HMaster 会在每次 gc 后打印出 gc 时间,并且与 gc log 中的一致。 gc日志是jvm生成的,所以我觉得靠谱。
-
你的堆有多大?有时会在收集后调整世代的大小,如果您没有设置固定的世代大小,调整大小可能需要一些时间才能完成。
标签: java process jvm hbase cpu