public void createWork(String name, RedisConnectionConfig config) {
ScheduledFuture<?> schedule =
threadPoolTaskScheduler.scheduleWithFixedDelay(
() -> {
synchronized (this) {
RedisCliInfoMemory memory = redisServerInfo.memory(config);
DateTimeFormatter dateTimeFormatter =
DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
RedisMemoryTaskData redisMemoryTaskData =
new RedisMemoryTaskData(
Long.parseLong(memory.getUsedMemory()),
Long.parseLong(memory.getUsedMemoryRss()),
Long.parseLong(memory.getUsedMemoryPeak()),
Long.parseLong(memory.getUsedMemoryLua()));
RedisMemoryCache redisMemoryCache = memoryCacheMap.get(name);
log.debug("开始设置redis内存监控缓存,name=[{}],value=[{}]", name, redisMemoryTaskData);
if (redisMemoryCache == null) {
redisMemoryCache = new RedisMemoryCache(3);
redisMemoryCache.put(
dateTimeFormatter.format(LocalDateTime.now()), redisMemoryTaskData);
} else {
redisMemoryCache.put(
dateTimeFormatter.format(LocalDateTime.now()), redisMemoryTaskData);
}
log.info("开始设置redis组级别的缓存,name=[{}]", name);
memoryCacheMap.put(name, redisMemoryCache);
}
},
// triggerContext -> new
// CronTrigger(redisMemoryCron).nextExecutionTime(triggerContext)
2000);
futureMap.put(name, schedule);
}
- 这个定时任务在执行了几次以后自己就停止了我应该如何处理. 希望可以一直执行.
追了一下,卡在获取redis连接了。
org.tview.visualization.redis.impl.IRedisServiceInfoImpl.memory()
中调用连接池的getConnection
方法后没有释放连接,前几次还ok,连接池满了之后就获取不到了。把连接对象调用close方法就行了。