Kubernetes Pod 在较长的 GC 周期内自动重启



我们注意到每当JVM的垃圾收集持续时间有点长时,我们的Kubernetes pods(Google Container Engine(就会重新启动。

具体来说,任何时候,它似乎跨越~20秒,都会导致pod重新启动。

1( JVM 没有堆内存不足。它仍然不到已分配堆的 20%。只是在很长一段时间内,特定的 GC 周期需要很长时间(可能是由于当时该 pod 磁盘上的 IO

(2(我尝试将活动性检查参数调整为periodSeconds=12,failureThreshold=5,以便活动性检查过程至少等待12 * 5 = 60秒,然后确定一个pod已经无响应并用一个新的替换它,但它仍然在GC暂停超过20-22秒后重新启动pod。

任何人都可以评论为什么会发生这种情况,以及我还可以调整什么以在此 GC 暂停时不重新启动 pod?很遗憾,因为仍然有很多堆容量可用,内存并不是应该替换它的真正原因。

找到了。

除了将 periodSeconds 设置为 12 之外,我还必须将 timeoutSeconds 从默认值 1 秒调整为 5 秒,以使其等待 ~60 秒,然后再将 pod 标记为无响应。

最新更新