前言
EasyCache升级兼容 Springboot2,有个业务系统启动总是会卡住,最后抛出超时异常,如下:
java.util.concurrent.TimeoutException: null
at 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 release lock on <0x38a5> (a java.util.concurrent.ConcurrentHashMap)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.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 SpringDataTestService {
private StringRedisTemplate stringRedisTemplate;
//@EventListener(MainContextRefreshedEvent.class)
public void init() {
String s = stringRedisTemplate.opsForValue().get("gateway:ab-test:config");
System.out.println(s);
}
}
总结
相关推荐:
从“官网扒下来”看企业数字化转型的未来,摄影营销策略推广文案
优化文字,让表达更精准:提升写作效率的关键,个人网站建设外包
SEO针对中小企业的增长潜力:如何通过精准优化抢占市场先机,网络推广和营销就选y火10星评价
SEO确实是企业增长的关键,这些技巧让你走在行业前沿,山东网站建设信息
SEO大量优化:如何通过精准策略提升网站流量,突破搜索引擎排名瓶颈,吕梁本地网站推广平台
产品seo什么意思,产品seo标题是什么 ,ai模仿张宇
SEO学费多少钱?揭秘SEO培训的投资价值与回报!,郴州网站推广多少钱一个
打造高效创作体验,写文章AI软件重塑内容生产力
优化,让生活与工作更高效-从个人到企业的全面升级,广州百度seo费用
ChatGPT,您的银行卡被拒绝了?别慌,这些方法帮您快速解决问题!,ai给那个标声调
SEO教研:数字营销新趋势,提升网站流量与转化率的关键,齐鲁证券网站建设
seo该从什么开始,seo是什么时候开始的 ,ai写作免费英文怎么说
SEO全套秘籍:提升网站流量与排名的终极指南,荣昌手机网站建设
AI一键生成文章,写作新境界
AI一键生成文章在线:提升创作效率,改变写作方式
SEO韩国:为您开启国际市场的增长之门,seo文章标题有哪些
AI缩写文档:革新文档管理与自动化的未来,ai聊天中文
AI代谢文章:从灵感到成果的创作革命
SEO职责:为网站注入流量,提升品牌竞争力,拼多多女装关键词排名
目前国内最好的AI人工智能软件:未来新篇章
SEO快速优化技术:助力网站流量暴增,轻松登顶搜索引擎,铜陵ai全网通推广软件
ChatGLM不能搜索网页内容,你真的了解它的局限性吗?,ai修复情侣
SEO永远,数字营销的核心力量,广州seo搜索栏内容
优化综合:引领高效发展的智慧之道,电影营销的推广方式
SEO合同:确保您网站优化成功的关键保障,微博营销推广规则最新
2025百度收录优化:提升网站排名,助力企业数字化转型,第一ai做
SEO提高:如何通过精准优化让网站流量翻倍,优化排名seo加盟费用
SEO可以改变你的商业未来:如何通过优化提升网站流量和转化率,五粮液营销推广
seo配置是什么,seo设置是什么 ,ai图标制作教程
seo网络推广要做什么,seo 网络推广 ,ai少女喝药
如何选择适合你的AI工具?全面解析AI工具哪个好用
SEO导流:如何通过精准优化实现网站流量大爆发,网站优化优化怎么做
SEO联系:如何通过SEO优化提升您的网络营销效果,企业营销推广获客
SEO代做:让你的企业轻松登顶搜索引擎,快速提升曝光率,seo 提高注册量
ChatGPT怎么找梯子:突破网络限制,轻松访问AI助手的终极指南,鬼灭之刃人物AI还原
“扩写AI”-引领写作革命,开启智能创作新时代,dede seo 标题如何填写
SEO模块:提升网站排名,驾驭数字营销未来,营口网站建设制作平台
SEO优化需要花钱吗?从零起步,如何让SEO成为企业的“隐形财富”,字体如何往ai里面倒
seo规范是什么意思,seo包括哪些内容 ,AI智能破解
ChatGPT198元永久会员,开启智慧之门,体验AI的极致服务!,老孙教ai
ChatGPT的破解版:AI世界的新突破,ai无禁忌
AI通过算法和数据生成的作品:科技与艺术的跨越,带来无限创意可能,ai优化程序
“曝光量扩大,助力品牌腾飞的秘密武器”,盐山网站优化免费咨询
内容创作新时代:自动生成文章的AI如何改变写作生态
AI生成文章免费工具,让创作变得轻松又高效,ai安心健
ChatGPT异常了:人工智能的极限与突破,ai and ethics
OpenAI网站崩溃原因:背后的技术与挑战,千牛Ai智投在哪里找
GPT-3.5可以免费使用吗?AI未来的无限可能,ai烧猪
洗文章AI:让内容创作变得更智能、更高效
GPT人工智能-让未来触手可及的智慧之光,ai头花写真