聊城正规网站建设设计公司,重庆川九建设有限责任公司官方网站,找公司做网站多少钱成都,单页面企业网站JAVA技术广泛用于各行各业#xff0c;而云原生的流行#xff0c;越来越多的企业将java应用搬进K8S中进行部署管理#xff0c;OOM是java应用比较常出现的故障问题#xff0c;对于容器环境的java应用搜集OOM等现场比较有难度#xff0c;为了持续对应用的优化#xff0c;搜集…JAVA技术广泛用于各行各业而云原生的流行越来越多的企业将java应用搬进K8S中进行部署管理OOM是java应用比较常出现的故障问题对于容器环境的java应用搜集OOM等现场比较有难度为了持续对应用的优化搜集故障现场也是比较重要的。这里介绍一种搜集现场的方式仅供参考。
这里主要使用容器生命周期钩子函数PreStop在容器因 API 请求或者管理事件诸如存活态探针、启动探针失败、资源抢占、资源竞争等 而被终止之前此回调会被调用。如果容器已经处于已终止或者已完成状态则对 preStop 回调的调用将失败。在用来停止容器的 TERM 信号被发出之前回调必须执行结束。Pod 的终止宽限周期在 PreStop 回调被执行之前即开始计数 所以无论回调函数的执行结果如何容器最终都会在 Pod 的终止宽限期内被终止。没有参数会被传递给处理程序。
配置示例
lifecycle:preStop:exec:command:- /bin/sh- -c- pidps -ef |grep java | grep -v grep |awk {print $1}; jmap -dump:formatb,file/data/dump/${JAR_NAME}.dump${pid}
在容器销毁前通过jmap命令收集dump到指定目录。 注意事项 1. 这个目录需要做持久化而且要及时清理减少磁盘占用因为日常的发布也会触发preStop 2. 终止宽限期-terminationGracePeriodSeconds需要调整给jmap预留充分的时间保留现场也不能太长调长的副作用是滚动发布会变慢。 参考资料容器生命周期回调 | Kubernetes