[ https://issues.apache.org/jira/browse/CASSANDRA-5661?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13693876#comment-13693876 ]
Jeremiah Jordan commented on CASSANDRA-5661: -------------------------------------------- [~xedin] LCS == LeveledCompactionStrategy. While in theory I like the idea of the searchers in most cases expiring quicker with timers, in practice since these are on the heap, and LCS defaults to only 5 MB files per levels, you can have A LOT of sstables, 200 per GB... Which as [~jbellis] mentioned makes # of sstables * concurrent readers a big problem, which was the problem hit above. So we really need to bound memory usage with a hard cap, not the fuzzy cap of "how many can I open in X seconds". 1k reqs/sec hitting a 4 level deep LCS CF could mean 4k Reader's (~500 MB) created per second. Now that I say that out loud, I almost think we should go back to not caching these at all so they always just get recycled in young gen and never have a chance to hit old gen. I guess it could be a config parameter which defaults on for STCS and off for LCS. Since STCS work loads have no where near as many sstables. > Discard pooled readers for cold data > ------------------------------------ > > Key: CASSANDRA-5661 > URL: https://issues.apache.org/jira/browse/CASSANDRA-5661 > Project: Cassandra > Issue Type: Bug > Components: Core > Affects Versions: 1.2.1 > Reporter: Jonathan Ellis > Assignee: Pavel Yaskevich > Fix For: 1.2.7 > > > Reader pooling was introduced in CASSANDRA-4942 but pooled > RandomAccessReaders are never cleaned up until the SSTableReader is closed. > So memory use is "the worst case simultaneous RAR we had open for this file, > forever." > We should introduce a global limit on how much memory to use for RAR, and > evict old ones. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira