J'ai besoin d'aide pour améliorer les performances de lecture de Cassandra. Je suis préoccupé par la dégradation des performances de lecture lorsque la taille de la famille de colonnes augmente. Nous avons les statistiques suivantes sur Cassandra à un seul nœud.
Système d'exploitation : Linux - CentOS version 5.4 (Final)
Version de Cassandra : apache-cassandra-1.1.0
Version Java : "1.6.0_14" Environnement d'exécution Java(TM) SE (build 1.6.0_14-b08) Java HotSpot(TM) 64-Bit Server VM (build 14.0-b16, mode mixte)
Configuration de Cassandra : (cassandra.yaml)
- rpc_server_type : hsha
- disk_access_mode : mmap
- lectures simultanées : 64
- écritures simultanées : 32
Plate-forme : Instance Amazon-ec2/Rightscale m1.Xlarge avec 4 disques éphémères en raid0 (15 Go de mémoire totale, 4 cœurs virtuels, 2 UCE, UCE totale = 8).
Configuration des expériences : J'ai essayé de faire quelques expériences avec GC
Configuration de Cassandra :
10 GB de RAM sont alloués au Heap de Cassandra, 3500MB est la taille du Heap NEW.
JVM Config :
JVM_OPTS="$JVM_OPTS -XX:+UseParNewGC"
JVM_OPTS="$JVM_OPTS -XX:+UseConcMarkSweepGC"
JVM_OPTS="$JVM_OPTS -XX:+CMSParallelRemarkEnabled"
JVM_OPTS="$JVM_OPTS -XX:SurvivorRatio=1000"
JVM_OPTS="$JVM_OPTS -XX:MaxTenuringThreshold=0"
JVM_OPTS="$JVM_OPTS -XX:CMSInitiatingOccupancyFraction=40"
JVM_OPTS="$JVM_OPTS -XX:+UseCMSInitiatingOccupancyOnly -XX:+UseCompressedOops"
Statistiques de résultats de la communauté OpsCenter 2.0 :
Demandes de lecture 208 à 240 par seconde
Demandes d'écriture 18 à 28 par seconde
Charge OS 24.5 à 25.85
Latence des requêtes d'écriture 127 à 160 micros
Latence des requêtes de lecture 82202 à 94612 micros
Trafic réseau envoyé par l'OS 44646 KB en moyenne par seconde
Trafic réseau reçu par le système d'exploitation 4338 Ko en moyenne par seconde
Taille de la file d'attente des disques d'OS 13 à 15 demandes
Demandes de lecture en attente 25 à 32
Latence des disques d'OS 48 à 56 ms
Débit de lecture des disques du système d'exploitation 4,6 Mo par seconde
IOPs du disque Lectures 420 par seconde
IOWait 80 % CPU avg
Idle 13 % CPU avg
Rowcache est désactivé.
La famille Column
L'une des familles de colonnes que je ne fais que lire est créée par CLI.
create column family XColFam
with column_type='Standard'
and comparator = CompositeType(BytesType,IntegerType)';"
Famille de colonnes SSTable Taille = 7,10 Go, Nombre de SSTable = 2
XColFam
La famille de colonnes a 59499904 nº de clés de ligne estimées (la plupart sont des littéraux utf8 de longueur variable, estimés par mx4jtools) avec des colonnes de nature fine, avec la valeur 0 bytes.....now.
La plupart des lignes devraient avoir un très petit nombre de colonnes, peut-être de 1 à 10, donc avec environ 20 à 30 octets du premier composant du nom de la colonne et le second est un entier de 8 octets....2e composant de la colonne composite est dynamique pourrait se répéter mais la probabilité est faible.......1e composant se répète dans les variétés mais le nombre de colonnes dans les lignes pourrait être différent.
J'ai essayé SnappyCompression
pour compresser la famille de colonnes, mais la taille n'a pas changé.
J'ai un service planifié qui fonctionne pendant des heures avec 20 threads et qui fait des demandes de lecture aléatoires pour des clés multiples (pour l'instant, il s'agit de 2 clés par demande) pour cette famille de colonnes et lit des lignes complètes, sans tranche de colonne ou autre.
Je pense qu'il ne fonctionne pas bien maintenant parce qu'il traite trop peu de demandes par minute. Il fonctionnait mieux auparavant lorsque la taille de la famille de colonnes n'était pas si importante. Elle était d'environ 3 à 4 Go.
Je crains que les performances de lecture ne se dégradent trop rapidement avec l'augmentation de la taille de la famille de colonnes.
J'ai également essayé de modifier certains paramètres de GC et de mémoire, car avant cela, j'utilisais beaucoup de GC et de CPU. Lorsque la taille des données était plus petite et qu'il y avait un très petit iowait dans la forme d'onde.
Comment puis-je augmenter les performances de Cassandra ? Vos suggestions seront appréciées.