当前位置: 首页 > news >正文

K8S 搜集java应用pod重启前现场 —— 筑梦之路

JAVA技术广泛用于各行各业,而云原生的流行,越来越多的企业将java应用搬进K8S中进行部署管理,OOM是java应用比较常出现的故障问题,对于容器环境的java应用搜集OOM等现场比较有难度,为了持续对应用的优化,搜集故障现场也是比较重要的。这里介绍一种搜集现场的方式,仅供参考。

这里主要使用容器生命周期钩子函数PreStop,在容器因 API 请求或者管理事件(诸如存活态探针、启动探针失败、资源抢占、资源竞争等) 而被终止之前,此回调会被调用。如果容器已经处于已终止或者已完成状态,则对 preStop 回调的调用将失败。在用来停止容器的 TERM 信号被发出之前,回调必须执行结束。Pod 的终止宽限周期在 PreStop 回调被执行之前即开始计数, 所以无论回调函数的执行结果如何,容器最终都会在 Pod 的终止宽限期内被终止。没有参数会被传递给处理程序。

配置示例:

lifecycle:preStop:exec:command:- /bin/sh- -c- pid=`ps -ef |grep java | grep -v grep |awk '{print $1}'`; jmap -dump:format=b,file=/data/dump/${JAR_NAME}.dump${pid}

在容器销毁前通过jmap命令收集dump到指定目录。

注意事项:

1. 这个目录需要做持久化,而且要及时清理减少磁盘占用,因为日常的发布也会触发preStop;

2. 终止宽限期-terminationGracePeriodSeconds需要调整,给jmap预留充分的时间保留现场,也不能太长,调长的副作用是滚动发布会变慢。

参考资料:容器生命周期回调 | Kubernetes 

http://www.lryc.cn/news/268022.html

相关文章:

  • php5.6安装mongo扩展
  • 简析SoBit 跨链桥图文教程
  • C#与php自定义数据流传输
  • redis和数据库的同步问题
  • Flink系列之:深入理解ttl和checkpoint,Flink SQL应用ttl案例
  • Wails中js调用go函数(1种go写法,2种js调用方法)
  • 【我与java的成长记】之面向对象的初步认识
  • 面试题之二HTTP和RPC的区别?
  • 初试Kafka
  • SuperMap Hi-Fi 3D SDK for Unity基础开发教程
  • Upload-lab(pass1~2)
  • Linux:查询当前进程或线程的资源使用情况
  • unityc用vs2017介绍
  • 单元测试实战
  • WebService
  • Nestjs使用log4j打印日志
  • Selenium - 自动化测试框架
  • RFID技术在汽车制造:提高生产效率、优化物流管理和增强安全性
  • git异常
  • 【C语言学习疑难杂症】第12期:如何从汇编角度深入理解y = (*--p)++这行代码(易懂版)
  • 5G阅信应用场景有哪些?
  • 使用OpenSSL生成自签名SSL/TLS证书和私钥
  • pycharm2023.2激活和新建项目,python3.12安装永久换源
  • FPGA分频电路设计(2)
  • 【三】【C语言\动态规划】珠宝的最高价值、下降路径最小和、最小路径和,三道题目深度解析
  • 爬虫工作量由小到大的思维转变---<第二十八章 Scrapy中间件说明书>
  • 从Maven初级到高级
  • orangepi--开发板配置网络SSH登录
  • 简单通讯录管理系统第4关:简单通讯录管理系统之修改通讯录用户信息
  • macOS编译ckb-next