2013-07-26 3 views
0

Utilise-t-il la mémoire de tas ou la mémoire restante du serveur?Quelle est la mémoire utilisée par Cassandra pour Row Cache?

I ont un serveur avec 32 Go de mémoire vive, j'initialisée Cassandra avec un 25 GB MAX_HEAP_SIZE et I spécifié une capacité de cache de ligne de 20 Go.

Suis-je en supposant correctement Row cache utilise la mémoire de tas j'initialisés le processus avec? Ou ma configuration s'attend-elle à ce que le serveur ait au moins 45 Go de RAM?

+0

Juste curieux: Des problèmes de GC avec autant de tas (maximum recommandé est 8G)? –

+0

Aucun jusqu'à présent, mais je vais garder un oeil là-dessus et de faire rapport s'il y a – juan

+0

@DirkLachowski, selon [la réponse de omnibear] (http://stackoverflow.com/a/17884500/1782) ma configuration est mauvaise et lié à exploser de toute façon, donc je vais devoir le changer – juan

Répondre

3

This row key documentation indique qu'il ya 2 implémentations row_cache_provider réelles:

SerializingCacheProvider: Sérialise le contenu de la ligne et stocke en mémoire native, qui est, de la machine virtuelle Java Heap

et

ConcurrentLinkedHashCacheProvid er: Les lignes sont mises en cache en utilisant le tas JVM, fournissant le même comportement de cache de ligne que les versions Cassandra avant 0,8.

La valeur par défaut est SerializingCacheProvider donc si vous ne changez pas, le cache de ligne ne pas utiliser la mémoire JVM Heap.

+0

Je demande à propos de * Row Cache *, pas * Key Cache * – juan

+0

Assez juste. J'ai révisé ma réponse en conséquence. – omnibear

+1

Beaucoup mieux merci! Votre conclusion est fausse cependant, par défaut le cache de ligne ne fait pas partie du tas – juan

0

Au vu de la source, le cache de ligne est un ICache, qui est mise sur le tas selon son être un objet sans un traitement spécial.

Vous pouvez effectuer d'autres tests pour déterminer la véritable performance et gestion de la mémoire.

Questions connexes