首页 > 作文

关于springboot2整合lettuce启动卡住问题的解决方法

更新时间:2023-04-04 07:18:16 阅读: 评论:0

前言

easycache升级兼容 springboot2,有个业务系统启动总是会卡住,最后抛出超时异常,如下:

java.util.concurrent.timeoutexception: nullat java.util.concurrent.futuretask.get(futuretask.java:205).....

springboot 版本是 2.2.x,springcloudversion 版本是 2.2.x, lettuce版本是5.2.x,如果使用jedis客户端没有,所以问题一定是出在lettuce。

分析原因

如果是线上发生这个问题会使用 jstack 查看线程的情况,在本地idea调试就更加方便了,查看线程发现lettuce的线程被blocked,dump出的部分信息如下:

“lettuce-kqueueeventloop-7-1@14257” daemon prio=5 tid=0x4c nid=na waiting for monitor entry

java.lang.thread.state: blocked

waiting for main@1 to relea lock on <0x38a5> (a java.util.concurrent.concurrenthashma焦裕禄电影观后感p)

at org.springframework.beans.factory同年.support.defaultsingl中长波波头发型图片etonbeanregistry.getsingleton(defaultsingletonbeanregistry.java:208)

at org.springframework.beans.factory.support.abstractbeanfactory.dogetbean(abstractbeanfactory.java:321)

….

看第一行的报错是在获取bean的时候阻塞了,说明有地方获取bean的时候没有释放锁。在这地方打断点发现是 spring-cloud-sleuth 的 samplerautoconfiguration获取bean的时候有锁没有释放。源代码如下

protected static class refreshscopedsamplerconfiguration {public sampler defaulttracesampler(samplerproperties config) {return samplerfromprops(config);}}

@refreshscope 获取代理类的时候如果是@postconstruct的方法,bean是加载不到,所以导致一直没有释放锁。所以猜想,容器还没有启动完成的时候,有地方调用了lettuce的bean,导致循环依赖。

坑的复现及解决办法

运行下面这段代码,错误就出现了,和业务系统出现的问题一模一样,也验证了上面的猜想。解决办法是在容器启动之后在调用init方法。(实测使用initializingbean时也会出现该问题)

public class springdatatestrvice {    private stringredistemplate stringredistemplate;    //@eventlistener(maincon新的反义词是什么textrefreshedevent.class)    public void init() {        string s = stringredistemplate.opsforvalue().get("gateway:ab-test:config");        system.out.println(s);    }} 

总结

范进中举读后感到此这篇关于springboot2整合lettuce启动卡住问题解决的文章就介绍到这了,更多相关springboot2整合lettuce启动卡住内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!

本文发布于:2023-04-04 07:18:15,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/533d4b371d9b65f950ff7f3d1fb35b9d.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:关于springboot2整合lettuce启动卡住问题的解决方法.doc

本文 PDF 下载地址:关于springboot2整合lettuce启动卡住问题的解决方法.pdf

标签:线程   是在   版本   地方
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图