Cassandra okuma performansını iyileştirmek için yardıma ihtiyacım var. Sütun ailesinin büyüklüğü arttıkça okuma performansının düşmesinden endişe duyuyorum. Tek düğüm Cassandra'da şu istatistiklere sahibiz.Cassandra Amazon EC2, Okuma Performansı deneyleri
İşletim Sistemi: -: apache-cassandra-1.1.0
Java sürümü: "1.6.0_14" Java (TM) SE Runtime Linux CentOS (Final) 5.4
Cassandra versiyonu yayınlayacak Çevre (build 1.6.0_14-B08) Java HotSpot (TM) 64-bit sunucu VM (karışık modu 14.0-B16 inşa)
Cassandra Yapılandırma: (cassandra.yaml)
- rpc_server_type: hsha
- disk_access_mode: mmap
- concurrent_reads: 64
- concurrent_writes: 32
Platformu: 4 kısa ömürlü diskleri ile Amazon-EC2/Rightscale m1.Xlarge örneği raid0 ile. (15 GB toplam bellek, 4 Sanal Çekirdekler, 2 ECU toplam ECU = 8)
Deney konfigürasyonları: I GC ile
Cassandra yapılandırma bazı deneyler yapmak çalıştık :
10 GB RAM Cassandra Heap için ayrılmıştır, 3500MB Heap NEW boyutudur.
JVM Yapılandırma:
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 "
OpsCenter topluluğunun 2.0'dan
Sonuç istatistikleri:
Oku 208 saniye
OS Yükü 24.5 başına 28-18 İstekleri ikinci
yazma başına 240 25 İstekleri.85
Yaz Talebi Gecikme 127 160 mikroları
Okuma İsteği Gecikme 82202 94612 için mikroları
Ağ Trafiği ikinci
OS Recieved Ağ Trafiği 4338 KB ort başına ikinci
OS disk sırası Boyut 13 ila 15. başına 44.646 KB ort Gönderilen OS Beklemede
Oku İstekleri istekleri 25 32-
OS Disk gecikme 48 ila 56 ms
OS disk okuma Verim ikinci
Disk GİB başına 4.6 Mb ikincibaşına 420 okur
IOWait% 80 işlemci ort
Bekleme% 13 işlemci ort
Rowcache devre dışı bırakılır.
Sütun Aile ben sadece CLI yoluyla oluşturulur gelen okuyorum kolon ailesinin
Bir
create column family XColFam
with column_type='Standard'
and comparator = CompositeType(BytesType,IntegerType)';"
Sütun ailesi SSTable Boyut = 7.10 GB SSTable Sayısı = 2
XColFam
sütun ailesi, 59499904 no'dur. tahmin edilen satır anahtarlarının (çoğu utf8 literal ile değişen uzunluk, mx4jtools ile tahmin edilir) doğada ince gibi sütunlar, 0 bayt değeri ile şimdi ......
Satırların çoğunun çok az sayıda sütunu olmalıdır, 1 ile 10 arasında olabilir, bu nedenle yaklaşık 20 ile 30 baytlık 1. kolon adı bileşeni ve 2.'si 8 baytlık tamsayıdır .... Bileşik sütunun 2. bileşeni Dinamik tekrarlanabilir ancak olasılık düşüktür. 1. bileşen çeşitlerde tekrarlanır ancak satırlardaki sütun sayısı farklı olabilir.
Sütun ailesini sıkıştırmak için SnappyCompression
'u denedim ancak boyutta hiçbir değişiklik olmadı.
Ben vs. zamanlanmış tam satırları 20 konuda saatlerce çalışacak ve bu sütunda ailesine (istek başına artık 2 anahtarları için) birçok anahtarın rasgele okuma isteklerini yapmak ve okumak servisi, hiçbir sütun dilim ya sahip
Sanırım şimdi iyi performans göstermiyor çünkü her dakika çok az işlem yapıyor. Sütun ailesinin büyüklüğü o kadar büyük olmadığı zaman daha iyi çalışıyordu. 3 ila 4 GB civarındaydı.
Korkarım, sütun ailesinin boyutunun artmasıyla performansın çok hızlı bozulmasını okuyun.
Ayrıca bazı GC ve bellek öğelerini düzeltmeye çalıştım, çünkü bundan önce çok sayıda GC ve CPU kullanımı geçiriyordum. Veri boyutu daha küçük olduğunda ve dalga formunda çok küçük iowait vardı.
Cassandra performansını nasıl artırabilirim. Önerileriniz takdir edilecektir.
Gecikme İsteğini Okuyun 82202 ila 94612 mikro ... 82 saniye gecikme süresi? – Crowie