两个 k8s pod 运行相同的映像(使用 Adoptium 17 JRE)。
晚上 9 点左右,他们开始收到请求并创建对象。 在蓝色的 Pod 上,我们可以看到垃圾收集工作正常。 但在红色 pod 上,eden 空间会出现峰值(总内存使用量约为 90%)并且永远不会下降。
Pod 已重新启动,因此没有进一步的证据,但我很想获得一些关于可能导致图中所示红色 Pod 行为的意见。 为什么会导致内存利用率居高不下呢? Pod 仍然处于活动状态并正在处理请求,只是经常抱怨由于缺乏资源而无法创建新的 pthread。
如果红线表示 JVM 中已使用的堆空间量,则该 JVM 处于非活动状态;即它不处理请求。 活跃的 JVM 将生成垃圾,并且 JVM 应该 定期运行 GC ...导致经典的锯齿模式。 相反,如果垃圾正在生成并且没有被收集,那么 JVM 就注定失败。 所以:
(Eden)堆空间,而不是total堆空间。 如果它是活动 JVM 上的used堆空间,那么它是一条平线这一事实是令人费解的。