项目中使用缓存报Redisson is shutdown排查

这篇具有很好参考价值的文章主要介绍了项目中使用缓存报Redisson is shutdown排查。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

上周运维将项目的测试环境从k8s中迁出来后,测试发现储能网关一直在上报数据,但是并没有映射到对应的设备上,排查时发现MQ在正常消费,并没有消息挤压,而且日志也没有报错信息,当时就很纳闷,觉得不可思议,通过过滤日志,发现消费了网关的上报的消息,并没有将消息发到设备对应的Topic中,
于是启动本地代码连测试环境,发现我本地并不报错,又只能去测试服务区排查,后面通过arthas拦截处理消息的方法,才看到异常信息,发现是org.redisson.RedissonShutdownException: Redisson is shutdown,有了异常信息我们就好排查啦。redisson is shutdown,Spring,mq,项目问题,缓存,java,开发语言

问题排查

第一步复制异常信息,往百度一贴,看下有没有现成的答案,找了很久只找到一篇使用Redisson实现分布式锁来做秒杀的帖子,链接在这
https://blog.51cto.com/u_15057843/4213532
帖子说是因为主线程关闭了导致Redisson也关闭,子线程还在跑,对我们的帮助不大,我们不是这种情况。继续百度,关于这方面的帖子真的是少的可怜,没办法打开redisson源码的issue,一个个看呗,还真找到了该异常的帖子。
链接如下:https://github.com/redisson/redisson/issues/1030
浏览一下,我把最关键的回复截图出来,人家说了Redisson不会主动调用销毁的方法,肯定是Spring容器调用的,总算是知道原因了,离答案就不远啦。
redisson is shutdown,Spring,mq,项目问题,缓存,java,开发语言

排查代码

直接在销毁的方法上打了个断点,通过JVM的远程调试功能连上对应的服务,不一会代码就走断点这里停了
redisson is shutdown,Spring,mq,项目问题,缓存,java,开发语言
然后观察堆栈信息,发现SpringBoot在启动过程中,由于Dubbo服务的端口被占用,启动就报错了,后面换了dubbo的端口,重启后就没有这个问题啦。至于为啥没看到这个端口占用异常日志,是因为我们测试环境在做压测,网关一分钟上报了120w的数据,这日志咔咔咔咔的刷,根本看不到错误日志。
redisson is shutdown,Spring,mq,项目问题,缓存,java,开发语言

事后

事后真想骂娘,服务都没启动,程序居然还在咔咔咔的消费MQ的消息,至于为啥服务没启动,还一直在消费消息这个问题,肯定是项目中使用了非守护线程,没有关闭。后面发现项目中MQ是自己手写代码启动的,然后容器销毁又没有销毁线程,前人挖坑,后人口吐芬芳。文章来源地址https://www.toymoban.com/news/detail-794175.html

到了这里,关于项目中使用缓存报Redisson is shutdown排查的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 在Java项目中使用redisson实现分布式锁

    在Java项目中使用Redission自定义注解实现分布式锁: 添加Redission依赖项:在项目的pom.xml中添加Redission依赖项: 创建自定义注解:创建一个自定义注解来标记需要使用分布式锁的方法。例如,创建一个名为 @DistributedLock 的注解: 创建注解切面:创建一个切面类,通过AOP将注解

    2024年02月16日
    浏览(39)
  • Redisson实现简单消息队列:优雅解决缓存清理冲突

    在项目中,缓存是提高应用性能和响应速度的关键手段之一。然而,当多个模块在短时间内发布工单并且需要清理同一个接口的缓存时,容易引发缓存清理冲突,导致缓存失效的问题。为了解决这一难题,我们采用Redisson的消息队列功能,实现了一个简单而高效的消息队列,

    2024年02月16日
    浏览(38)
  • 记一次 Redisson 线上问题 → ERR unknown command 'WAIT' 的排查与分析

    昨晚和一个朋友聊天 我:处对象吗,咱俩试试? 朋友:我有对象 我:我不信,有对象不公开? 朋友:不好公开,我当的小三 程序在生产环境稳定的跑着 直到有一天,公司执行组件漏洞扫描,有漏洞的  jar  要进行升级修复 然后我就按着扫描报告将有漏洞的  jar  修复到指

    2024年02月09日
    浏览(57)
  • redis缓存击穿,redisson分布式锁,redis逻辑过期

    什么是缓存击穿: 缓存击穿是指在高并发环境下,某个热点数据的缓存过期,导致大量请求同时访问后端存储系统,引起系统性能下降和后端存储压力过大的现象。 解决方案: 1. redisson分布式锁 本质上是缓存重建的过程中,大量的请求访问到后端的数据库导致数据库压力过

    2024年02月06日
    浏览(53)
  • 【Redis实践篇】使用Redisson 优雅实现项目实践过程中的5种场景

    Redisson是一个基于Redis的分布式Java对象和数据结构库,它提供了丰富的功能和易于使用的API,使开发人员能够轻松地在分布式环境中操作和管理数据。 作为一个分布式对象和数据结构库,Redisson提供了许多常见的数据结构和算法的实现,包括通用对象桶、二进制流、地理空间

    2024年02月13日
    浏览(51)
  • 【Spring Boot 3】【Redis】集成Redisson

    软件开发是一门实践性科学,对大多数人来说,学习一种新技术不是一开始就去深究其原理,而是先从做出一个可工作的DEMO入手。但在我个人学习和工作经历中,每次学习新技术总是要花费或多或少的时间、检索不止一篇资料才能得出一个可工作的DEMO,这占用了我大量的时

    2024年01月23日
    浏览(50)
  • Spring Boot 集成 Redisson分布式锁

            Redisson 是一种基于 Redis 的 Java 驻留集群的分布式对象和服务库,可以为我们提供丰富的分布式锁和线程安全集合的实现。在 Spring Boot 应用程序中使用 Redisson 可以方便地实现分布式应用程序的某些方面,例如分布式锁、分布式集合、分布式事件发布和订阅等。本篇

    2024年02月10日
    浏览(50)
  • Spring Boot 集成 Redisson 实现分布式锁

            Redisson 是一种基于 Redis 的 Java 驻留集群的分布式对象和服务库,可以为我们提供丰富的分布式锁和线程安全集合的实现。在 Spring Boot 应用程序中使用 Redisson 可以方便地实现分布式应用程序的某些方面,例如分布式锁、分布式集合、分布式事件发布和订阅等。本篇

    2024年02月08日
    浏览(39)
  • Spring Boot 集成 Redisson分布式锁(注解版)

            Redisson 是一种基于 Redis 的 Java 驻留集群的分布式对象和服务库,可以为我们提供丰富的分布式锁和线程安全集合的实现。在 Spring Boot 应用程序中使用 Redisson 可以方便地实现分布式应用程序的某些方面,例如分布式锁、分布式集合、分布式事件发布和订阅等。本篇

    2024年02月09日
    浏览(44)
  • Spring Boot与Redisson的整合。分布式锁

    Spring Boot与Redisson的整合可以帮助您在Spring Boot应用程序中使用分布式锁、缓存等功能。下面是一些基本步骤来整合Spring Boot与Redisson: 添加Maven/Gradle依赖: 在您的Spring Boot项目的 pom.xml (Maven)或 build.gradle (Gradle)文件中添加Redisson的依赖。 Maven依赖示例: Gradle依赖示例:

    2024年02月12日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包