Replies: 1 comment 3 replies
-
how many unique RMapCache objects do you use? |
Beta Was this translation helpful? Give feedback.
3 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
Hi,
we are using Redisson in combination with Netty's channel handler. Recently we have upgraded application to use RMapCache.
And since Redis itself does not offer ttl on hset, we decided to use eviction mechanism by Redisson. Starting with established Redisson version 3.17.0 following code was used:
RMapCache<String, String> deviceIds = getMapCache(messageId, profileId); deviceIds.put( deviceId.toString(), "", config.getRedis().getMsgExpiration().getQuantity(), config.getRedis().getMsgExpiration().getUnit());
But under some performance evaluation it was shown that Redisson's EvictionScheduler is accumulating MapCacheEvictionTask toward OutOfMemory ex.
Upgrading Redisson to version 3.23.1 as suggested in #5158
we have added removeEmptyEvictionTask option as i.e. following code:
MapCacheOptions<String, String> options = MapCacheOptions.defaults(); options.removeEmptyEvictionTask(); return redisson.getMapCache(MAP_CACHE_PREFIX + messageId + "_" + profileId, options);
Now EvictionScheduler seems to evict and remove the tasks, but leak moved to Netty's NioEventLoop which is accumulating large amount of executors, as in following snippet from MemoryAnalyzer tool, dump was taken upon oom:
while single(ton) Redisson object seems to not comprise any of those tasks:
The question to start discussion here is whether anyone encountered same or similar case and is willing to share hints where to look further.
Thank you in advance
Beta Was this translation helpful? Give feedback.
All reactions