异常日志不完整,NullPointException,ClassCastException无详细堆栈输出
问题描述:
问题排查中遇到这样的问题:
只有一个ClassCastException, 没有详细的日志输出,无法定位具体产生该异常的位置,此类问题如何定位?
解决方案:
产生原因:
jdk 1.6开始,默认server模式下当jvm检测到程序在重复抛一个异常,在执行若干次后会将异常吞掉,这里的若干次在jdk1.7测得是20707。即执行20707次后,stackTrace 长度会为0。(各类参考资料不一样,有些说明是10000,有些说明是3000)
当系统大量出现空指针、类型转换、数组越界之后,JVM会自动清空异常中的stackTrace
JDK源码:
以上可看到,当判断满足的情况下,会对NullPointerException\ArithmeticException\ClassCastException等等进行舍弃异常堆栈的处理
解决方式
服务的启动参数里增加: -XX:-OmitStackTraceInFastThrow 重启服务
已出现问题的环境在重启服务时如何排查?
尝试在沙箱、UAT环境重现问题, 在低频使用环境不会触发这个特性;
由于异常是在若干次后才吃掉,尝试寻找生产环境服务启动后早期的日志,这部分日志仍会输出完整堆栈
参考文献:
https://www.cnblogs.com/share-duke/p/12323576.html
异常日志不完整,NullPointException,ClassCastException无详细堆栈输出
问题描述:问题排查中遇到这样的问题:只有一个ClassCastException, 没有详细的日志输出,无法定位具体产生该异常的位置,此类问题如何定...
点击下载文档
上一篇:指定API服务最终HTTP状态下一篇:引入引出插件事件总览
本文2024-09-23 00:20:36发表“云苍穹知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-cangqiong-138859.html
您需要登录后才可以发表评论, 登录登录 或者 注册
最新文档
热门文章