[
https://issues.apache.org/jira/browse/CASSANDRA-4708?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Daniel Norberg updated CASSANDRA-4708:
--------------------------------------
Attachment: 0001-MessagingService-don-t-use-NBHM-in-ExpiringMap.patch
Attached patch with the proposed fix; replaces NBHM with CHM in ExpiringMap.
> StorageProxy slow-down and memory leak
> --------------------------------------
>
> Key: CASSANDRA-4708
> URL: https://issues.apache.org/jira/browse/CASSANDRA-4708
> Project: Cassandra
> Issue Type: Bug
> Reporter: Daniel Norberg
> Attachments: 0001-MessagingService-don-t-use-NBHM-in-ExpiringMap.patch
>
>
> I am consistently observing slow-downs in StorageProxy caused by the
> NonBlockingHashMap used indirectly by MessagingService via the callbacks
> ExpiringMap.
> This seems do be due to NBHM having unbounded memory usage in the face of
> workloads with high key churn. As monotonically increasing integers are used
> as callback id's by MessagingService, the backing NBHM eventually ends up
> growing the backing store unboundedly. This causes it to also do very large
> and expensive backing store reallocation and migrations, causing throughput
> to drop to tens of operations per second, lasting seconds or even minutes.
> This behavior is especially noticable for high throughput workloads where the
> dataset is completely in ram and I'm doing up to a hundred thousand reads per
> second.
> Replacing NBHM in ExpiringMap with the java standard library
> ConcurrentHashMap resolved the issue and allowed me to keep a consistent high
> throughput.
> An open issue on NBHM can be seen here:
> http://sourceforge.net/tracker/?func=detail&aid=3563980&group_id=194172&atid=948362
--
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