之前生产环境遇到过一个Redisson RFairLock引发的线程hang住的问题,当时导致了P0级别的故障,这里记录一下当时分析的过程 Jstack分析堆栈 首先通过jstack分析一下线程(由于涉及到公司内部代码,没有放出完整的堆栈),发现卡死在redisson的源码中 "scheduler-
1. 大量创建RMapCache存在OOM的风险 RedissonMapCache对象用完后,会被自动回收,但是EvictionScheduler 中注册的清理任务会继续保留,这就导致如果大量创建RedissonMapCache,清理任务的task会不断累计,可能会导致内存占用很高,甚至OOM,可以
代码分析 Redisson中RMapCache的实现是RedissonMapCache,先看RedissonMapCache构造器,里面有一个EvictionScheduler用于实现清理任务调度 public RedissonMapCache(EvictionScheduler evict
功能分析 先来看一下RMapCache提供的功能 支持闲置过期时间(多久未读) 支持写入过期时间 支持最大缓存容量,并支持指定LRU/LFU淘汰策略 支持分布式回调 Lua脚本分析 核心lua脚本(keys和argv已用变量名替换) put local insertable = false; lo
之前排查过Redisson RMapCache无法读取缓存bug,在这里记录一下当时排查的思路和具体原因 测试代码 测试redisson版本为3.13.1,先看测试代码 @Slf4j @SpringBootTest public class RedissonTest { @Autowire