On 5/9/11 9:49 PM, Jonathan Ellis wrote: > On Mon, May 9, 2011 at 5:58 PM, Alex Araujo> How many > replicas are you writing? >> Replication factor is 3. > So you're actually spot on the predicted numbers: you're pushing > 20k*3=60k "raw" rows/s across your 4 machines. > > You might get another 10% or so from increasing memtable thresholds, > but bottom line is you're right around what we'd expect to see. > Furthermore, CPU is the primary bottleneck which is what you want to > see on a pure write workload. > That makes a lot more sense. I upgraded the cluster to 4 m2.4xlarge instances (68GB of RAM/8 CPU cores) in preparation for application stress tests and the results were impressive @ 200 threads per client: +--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+ | Server Nodes | Client Nodes | --keep-going | Columns | Client | Total | Rep Factor | Test Rate | Cluster Rate | | | | | | Threads | Threads | | (writes/s) | (writes/s) | +==============+==============+==============+==============+==============+==============+==============+==============+==============+ | 4 | 3 | N | 10000000 | 200 | 600 | 3 | 44644 | 133931 | +--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+--------------+ The issue I'm seeing with app stress tests is that the rate will be comparable/acceptable at first (~100k w/s) and will degrade considerably (~48k w/s) until a flush and restart. CPU usage will correspondingly be high at first (500-700%) and taper down to 50-200%. My data model is pretty standard ( is pseudo-type information): Users "UserId<32CharHash>" : { "email": "a@b.com", "first_name": "John", "last_name": "Doe" } UserGroups "GroupId": { "UserId<32CharHash>": { "date_joined": "2011-05-10 13:14.789", "date_left": "2011-05-11 13:14.789", "active": "0|1" } } UserGroupTimeline "GroupId": { "date_joined": "UserId<32CharHash>" } UserGroupStatus "CompositeId('GroupId:UserId<32CharHash>')": { "active": "0|1" } Every new User has a row in Users and a ColumnOrSuperColumn in the other 3 CFs (total of 4 operations). One notable difference is that the RAID0 on this instance type (surprisingly) only contains two ephemeral volumes and appear a bit more saturated in iostat, although not enough to clearly stand out as the bottleneck. Is the bottleneck in this scenario likely memtable flush and/or commitlog rotation settings? RF = 2; ConsistencyLevel = One; -Xmx = 6GB; concurrent_writes: 64; all other settings are the defaults. Thanks, Alex.