JVM

k8s 服务频繁重启问题解决

2023-09-20  本文已影响0人  饱饱想要灵感

起因: 发现k8s的服务出现频繁重启的情况, 页面上多点几次百分百必现

推测: 内存不足引起

于是先查看k8s服务, 使用命令kubectl get pod service-name, 果不其然

k8s服务重启.png
发现k8s容器的最小和最大资源都只分配了1G, 可参考博客:
Kubernetes中requests和limits是干嘛的

那么, 尝试着调成2G看看~

k8s配置1G.png k8s配置2g.png

调成2G之后, 发现不会重启了, 但是一段时间之后, 在频繁访问下, 再次出现重启的情况, 查看k8s服务, 依然是内存溢出...

那肯定是配置还存在错误了, 再仔细一看, 发现jvm的最大堆内存设置成和容器最大内存一样了
由于java运行时占用的内存是可能大于-Xmx堆内存的, 因此 -Xmx的值是不能等于或大于limits的, 可参考博客: jvm设置了-Xmx, 但实际运行内存还是超过了它?

找到原因之后就好办了, 配置时只要保证JVM最大堆内存小于容器最大内存就没问题了, 于是配置如下, 问题解决
配置原则:
requests:memory <= -Xms = -Xmx < limits:memory
至于为什么推荐-Xms = -Xmx, 可参考博客: jvm -Xms和-Xmx设置一样有什么好处

k8s正确配置.png
上一篇下一篇

猜你喜欢

热点阅读