我的编程空间,编程开发者的网络收藏夹
学习永远不晚

程序日志停止滚动问题排查

短信预约 信息系统项目管理师 报名、考试、查分时间动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

程序日志停止滚动问题排查

今天在做定时任务的时候,遇到了一个比较难搞的问题,这个问题也比较有意思,现在给大家分享一下,这个定时任务的调用入口是这样的。

 // 进行 ldap同步
public void  runLdapSyncJob(){
    try {
        ldapSyncService.syncLdap();
    } catch (Exception e) {
        e.printStackTrace();
    }
}

这个方法ldapSyncService.syncLdap()向外抛出异常,这个方法内部会调用另一个方法


public  String creatStaffDepartCN(Map departmentDtoMap ,long targetDepartId,String rootCn, Set ldapDUSet ) throws Exception {}
    

但是传入的参数中,第二个参数传入的是Long类型,而且是null,一开始没排查出来,因为一直加日志,在调用处,数据返回处,数据验证处都加日志了,但是通过定时任务管理平台执行任务之后方法执行到一定行数就什么也没有了,也没有日志,怀疑是可能有死循环(程序里写了while)结果top一下,发现cpu,内存都很正常,结合之前遇到的这种情况也看了下这个定时任务的进程中线程状态,看看有没有blocked或者死锁(单线程操作应该不会有死锁),发现也没有。
这就尴尬了,于是想到了可能异常被框架或者jvm吃掉了,于是在上面两个方法里都加了try,catch

ldapSyncService.syncLdap() throws Exception{
try{
......
}catch(Exception e){
e.print();
}
}

creatStaffDepartCN() throws Exception{
try{
......
}catch(Exception e){
e.print();
}
}

再次部署执行之后发现确实有异常了,然后抛出了空指针,这里我恍然大悟,因为creatStaffDepartCN这个方法的第二个入参确实没有值传进去的。然后怀疑是否是因为自动装箱和拆箱过程中即使出现异常也会被jvm吃掉。本地简单写了一个demo,运行发现会报空指针。
这里没有打印异常我判断有下面几种可能
1.定时任务框架没有帮忙抛出。
2.最外层的try,catch没有生效
3.jvm把异常吃掉了

下面总结一下遇到程序日志停止滚动之后我们可以做的一些操作
1.top看是否由于FGC等问题导致的服务停止响应
2.jstack -l pid看一下进程内线程是否大量有blocked状态的线程
3.在日志停止滚动的代码上下文增加try,catch语句尝试捕获异常。

本文由博客一文多发平台 OpenWrite 发布!
架构设计@工程设计@服务稳定性之路

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

程序日志停止滚动问题排查

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

程序日志停止滚动问题排查

今天在做定时任务的时候,遇到了一个比较难搞的问题,这个问题也比较有意思,现在给大家分享一下,这个定时任务的调用入口是这样的。 // 进行 ldap同步public void runLdapSyncJob(){ try { ldapSync
2017-05-08

Win7玩游戏提示“显卡器驱动程序已停止响应”问题排查方法

Win7下玩游戏时提示“显卡器驱动程序已停止响应”排查解决技巧分享给大家。很多用户喜欢玩游戏,但是有一用户在win7 32位旗舰版系统中玩玩游戏的www.cppcns.com过程中,右下角的任务栏中出现了&ld
2023-06-13

如何解决win7系统玩游戏时显示器驱动程序停止响应的问题

本篇内容主要讲解“如何解决win7系统玩游戏时显示器驱动程序停止响应的问题”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何解决win7系统玩游戏时显示器驱动程序停止响应的问题”吧!  分析wn
2023-06-13

Windows7系统出现“显示器驱动程序 AMD driver已停止响应,并且已成功恢复“问题解决

Win7系统使用AMD显卡php驱动的同学会发现自己的电脑间歇性黑屏,php然后出现显示器驱动程序 AMD driver已停止响应,并且已成功恢复。 此问题可以追朔到Vista时代,微软官方也有解释,大意就是软件、系统、硬件之间的兼容性问题
2023-06-10

编程热搜

目录