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

Disruptor 消费线程丢失、写入无限阻塞问题

使用jstack打印后,发现

1)写入disruptor线程卡死在

   java.lang.Thread.State: TIMED_WAITING (parking)
    at sun.misc.Unsafe.park(Native Method)
    at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:338)
    at com.lmax.disruptor.MultiProducerSequencer.next(MultiProducerSequencer.java:137)
    at com.lmax.disruptor.MultiProducerSequencer.next(MultiProducerSequencer.java:105)
    at com.lmax.disruptor.RingBuffer.next(RingBuffer.java:263)

2)其他正常的disruptor消费线程都卡在
   java.lang.Thread.State: WAITING (parking)
    at sun.misc.Unsafe.park(Native Method)
    - parking to wait for  <0x0000000601b5d890> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
    at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
    at com.lmax.disruptor.BlockingWaitStrategy.waitFor(BlockingWaitStrategy.java:45)
    at com.lmax.disruptor.ProcessingSequenceBarrier.waitFor(ProcessingSequenceBarrier.java:56)
    at com.lmax.disruptor.BatchEventProcessor.run(BatchEventProcessor.java:128)
    at java.lang.Thread.run(Thread.java:745)
 

但是有问题的线程没有了。

原因分析:

参考:

http://gitlab.htzq.htsc.com.cn/liangjian/manager/-/merge_requests/726

1)disruptor并不是线程池,而是启动时就分配了线程。disruptor的消费逻辑中抛异常会导致线程。

2)日志打印不是走的log4j,走的是jdk原生的日志框架jul,会打日志到console log里面。本次问题发现是消费端抛了kafka超时异常。

解决方法:

增加异常处理逻辑或者disruptor添加exceptionHandler配置,比如ignore

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

相关文章:

  • 【禅道测试环境搭建及安装】Linux上的禅道安装教程,从环境搭建开始
  • spring-boot rabbitmq整合
  • CentOS7安装redis redis常用命令
  • 世界文明的脉络
  • map和set 的封装
  • Springboot集成kafka(环境搭建+演示)|超级详细,建议收藏
  • Qt 绘制图表 - Qt Charts版
  • Java学习笔记 --- JavaScript
  • AP5216 平均电流型LED 降压恒流驱动器
  • B站的多个视频教程,怎样生成一个二维码?
  • 深入底层源码的Listener内存马(内存马系列篇三)
  • 云端需求助力跑赢周期,金山办公有望借助ChatGPT加速腾飞
  • Vulnhub靶场----8、DC-8
  • Makefile 和 Shell 脚本的区别与联系
  • java25种设计模式之工厂模式
  • 力扣-2020年最后一次登录
  • [蓝桥杯] 数学与简单DP问题
  • 浏览器的渲染过程解析
  • 【C++容器】std::fstream读写文件错误【2023.03.03】
  • UVM实战--带有寄存器的加法器
  • 笔记--学习mini3d代码
  • 图片服务器
  • 【JAVA程序设计】【C00110】基于SSM(非maven)的车辆维修管理系统
  • 微积分小课堂:用动态的眼光去找问题的最优解(最大值/最小值)【中学里的解题技巧】
  • 网络爬虫和相关工具
  • OSSFs挂载工具简介
  • Spring 容器创建初始化,获取bean流程分析
  • 无聊小知识.03 Springboot starter配置自动提示
  • 2023-03-03 mysql-join类别-分析
  • Saleen 系列来袭!