织梦建站要多少钱,网站如何做301重定向,杭州网站建设推荐q479185700上墙,住房和城乡建设官网证书查询业务生产启动时#xff0c;20个节点有1-2个节点因为jvm问题出现启动失败#xff0c;k8s自动重启后正常。在测试环境2个节点下偶现 排查思路#xff1a;
先拿到hs_err_pid的jvm错误文件找到当前线程和内部错误信息
hs_err_pid 文件分析
当前线程#xff1a;lettuce的线程… 业务生产启动时20个节点有1-2个节点因为jvm问题出现启动失败k8s自动重启后正常。在测试环境2个节点下偶现 排查思路
先拿到hs_err_pid的jvm错误文件找到当前线程和内部错误信息
hs_err_pid 文件分析
当前线程lettuce的线程 线程堆栈 Internal exceptions 从信息中就可以看出导致这次jvm异常的是lettuce线程的一个jfr相关的操作。然后我们就可以去看lettuce 的官网和github有么有关于这个jfr的错误信息的记录还可以看jdk关于这个这个jfr的错误issue因为最后报错是jdk的报错 lettcue和jdk 官网资料排查
lettcue在6.1以上版本才开启了jfr事件流 jdk 官方解释 The class transformation of custom JFR events does not seem to be thread save. If multiple threads are loading the same custom JFR event class, eg. because the classloader is parallel capable, then this results in a JVM crash.
结论
lettuce在6.1以上版本开启了jdk的一个jfr事件流上报监控的功能这个jfr的功能和agent 字节码增强的transformation 操作在并行环境下有冲突所以就解释了为啥20个节点的时候是必现然后jvm异常后重启又正常了。
解决方案
io.lettuce.core.jfrfalse 禁用jfr功能
参考
jdk jfr bug: https://bugs.openjdk.org/browse/JDK-8249009 lettuce jfr: https://github.com/lettuce-io/lettuce-core/wiki/Connection-Events