cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jonathan Ellis (JIRA)" <j...@apache.org>
Subject [jira] [Resolved] (CASSANDRA-10402) reduce the memory usage of Metadata.tokenMap.tokenToHost
Date Fri, 02 Oct 2015 03:54:26 GMT

     [ https://issues.apache.org/jira/browse/CASSANDRA-10402?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Jonathan Ellis resolved CASSANDRA-10402.
----------------------------------------
    Resolution: Invalid

Java client is at https://github.com/datastax/java-driver

> reduce the memory usage of Metadata.tokenMap.tokenToHost
> --------------------------------------------------------
>
>                 Key: CASSANDRA-10402
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-10402
>             Project: Cassandra
>          Issue Type: Improvement
>          Components: Drivers (now out of tree)
>            Reporter: JosephGao
>             Fix For: 2.1.x
>
>
> My application uses 2000+ keyspaces, and will dynamically create keyspaces and tables.
And then in java client, the Metadata.tokenMap.tokenToHost would use about 1g memory. so this
will cause a lot of  full gc.
>    As I see, the key of the tokenToHost is keyspace, and the value is a tokenId_to_replicateNodes
map.
>    When I try to solve this problem, I find something not sure: * all keyspaces have
same 'tokenId_to_replicateNodes' map *.
>     My replication strategy of all keyspaces is : simpleStrategy and replicationFactor
is 3
>     So would it be possible if keyspaces use same strategy, the value of tokenToHost
map use a same map. So it would extremely reduce the memory usage
>      ps: the following is effected code:
> for (KeyspaceMetadata keyspace : keyspaces)
> {
>     ReplicationStrategy strategy = keyspace.replicationStrategy();
>     Map<Token, Set<Host>> ksTokens = (strategy == null)
>         ? makeNonReplicatedMap(tokenToPrimary)
>         : strategy.computeTokenToReplicaMap(tokenToPrimary, ring);
>     tokenToHosts.put(keyspace.getName(), ksTokens);
> }
> tokenToPrimary is all same, ring is all same, and if strategy is all same , strategy.computeTokenToReplicaMap
would return 'same' map but different object( cause every calling returns a new HashMap)



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message