Anecdotal evidence typically agrees that 2.1 is faster than 2.0 (our experience 
was anywhere from 20-60%, depending on workload).

However, it’s not necessarily true that everything behaves exactly the same – 
in particular, memtables are different, commitlog segment handling is 
different, and GC params may need to be tuned differently for 2.1 than 2.0.

When the system is busy, what’s it actually DOING? Cassandra exposes a TON of 
metrics – have you plugged any into a reporting system to see what’s going on? 
Is your latency due to pegged cpu, iowait/disk queues or gc pauses? 

My colleagues spent a lot of time validating different AWS EBS configs (video 
from reinvent at https://www.youtube.com/watch?v=1R-mgOcOSd4), 2.1 was faster 
in almost every case, but you’re using an instance size I don’t believe we 
tried (too little RAM to be viable in production).  c3.2xl only gives you 15G 
of ram – most “performance” based systems want 2-4x that (people running G1 
heaps usually start at 16G heaps and leave another 16-30G for page cache), 
you’re running fairly small hardware – it’s possible that 2.1 isn’t “as good” 
on smaller hardware. 

(I do see your domain, presumably you know all of this, but just to be sure):

You’re using c3, so presumably you’re using EBS – are you using GP2? Which 
volume sizes? Are they the same between versions? Are you hitting your iops 
limits? Running out of burst tokens? Do you have enhanced networking enabled? 
At load, what part of your system is stressed? Are you cpu bound? Are you 
seeing GC pauses hurt latency? Have you tried changing memtable_allocation_type 
-> offheap objects  (available in 2.1, not in 2.0)? 

Tuning gc_grace is weird – do you understand what it does? Are you overwriting 
or deleting a lot of data in your test (that’d be unusual)? Are you doing a lot 
of compaction?


From:  "Peddi, Praveen"
Reply-To:  "user@cassandra.apache.org"
Date:  Wednesday, January 6, 2016 at 11:41 AM
To:  "user@cassandra.apache.org"
Subject:  Slow performance after upgrading from 2.0.9 to 2.1.11

Hi,
We have upgraded Cassandra from 2.0.9 to 2.1.11 in our loadtest environment 
with pretty much same yaml settings in both (removed unused yaml settings and 
renamed few others) and we have noticed performance on 2.1.11 is worse compared 
to 2.0.9. After more investigation we found that the performance gets worse as 
we increase replication factor on 2.1.11 where as on 2.0.9 performance is more 
or less same. Has anything architecturally changed as far as replication is 
concerned in 2.1.11?

All googling only suggested 2.1.11 should be FASTER than 2.0.9 so we are 
obviously doing something different. However the client code, load test is all 
identical in both cases.

Details:
Nodes: 3 ec2 c3.2x large
R/W Consistency: QUORUM
Renamed memtable_total_space_in_mb to memtable_heap_space_in_mb and removed 
unused properties from yaml file.
We run compaction aggressive compaction with low gc_grace (15 mins) but this is 
true for both 2.0.9 and 2.1.11.

As you can see, all p50, p90 and p99 latencies stayed with in 10% difference on 
2.0.9 when we increased RF from 1 to 3, where as on 2.1.11 latencies almost 
doubled (especially reads are much slower than writes).

# Nodes RF# of rows2.0.92.1.11
READ        
   P50P90P99P50P90P99
314503065947474258491085
3345035863487770812742642
         
WRITE        
3110268017937131196
3310319618446166468
Any pointers on how to debug performance issues will be appreciated.

Praveen

Attachment: smime.p7s
Description: S/MIME cryptographic signature

Reply via email to