If your question is, "should I optimize for faster compaction or less impact on my cluster," the answer is almost always "less impact."
On Tue, Sep 14, 2010 at 8:33 PM, Dathan Pattishall <datha...@gmail.com> wrote: > Okay from what I gather. When data is written its always written to memory. > The flow for our concerns is the data is written to the commitLog then to > the memtable. > > If any of memtable's 3 tunable thresholds are hit a flush occurs writing the > data sorted by key to the SSTABLE still enabling sequential disk access. The > fastest disk access is sequential while random is the slowest - this is just > a statement to make sure people are on the same page. > > Now the data in the SSTABLE is immutable, and when the SSTABLE threshold is > hit (4 by default) the multiple SSTABLES are turned into a single TABLE, > this is compaction. Now I can't verify this because I never see more then 1 > SSTABLE at a time, which could just be me misinterpreting the info. This > Operation singly should produce the most load. > > Using JCONSOLE connected to a live Cass box JMX port and forced operations > from the MBEANS tab. I've quantified that normal operations for my > environment is 3% CPU utilization. > Each Node roughly does 200 operations per second on a standard key/value > pair sorted by UTF8 with a Random Partitioner. > > Doing a Flush for this 10MB Memtable consumes 33% of my CPU from Java's > point of view and that 33% is sustained for 15 mins - I assume some sorting > needs to be done according to this link: > http://wiki.apache.org/cassandra/JmxInterface#org.apache.cassandra.concurrent.FLUSH-WRITER-POOL > > Doing a compaction consumes 30% of my CPU and lasts for 10 mins from the > subsequent flush. > > Now to give some context my MemtableDataSize was around 11,000,000. I am > going to assume that this is in units of bytes so roughly 10MB of data. Is > assuming that MemtableDataSize is in units of bytes correct? If so why does > it take 15 mins to flush 10MB of data to a RAID-10 8 15K RPM disk array with > a 256 MB of memory and BBC on a dedicated hardware controller? > > Additional to this I see in system.log > > WARN [MESSAGE-DESERIALIZER-POOL:1] 2010-08-26 08:27:11,541 > MessageDeserializationTask.java (line 47) dropping message (9,713ms past > timeout) > > 39,625 events are showing. How do I get rid of this? If its a warning and is > dropping messages how can I fix the warning? > > > > So, in summary. On Cassandra 0.6.4 > with > TotalDiskSpaceUsed - 40GB > MemtableDataSize - 10MB > MemtableColumnsCount 130K > > How do I remove MessageDeserializationTasks warnings? > How do I reduce the compaction time? > Why is flushing taking so long? > What do I look at to tune Memtable thresholds, because this > http://wiki.apache.org/cassandra/MemtableThresholds does not help, and I > believe that I'm not in a position where I need to tune the defaults. > > http://www.riptano.com/blog/cassandra-annotated-changelog-063 allows me to > lower the priority of compaction, but to get the best compaction times > verses system load how do I tune for that? > > > > Below is some sample output of system.log > > Notice that SSTable 1155 is 320 MB, is the sorting taking all the time? > Because 320MB written even randomly should be very fast. 320 MB written > sequentially takes 2 seconds, while randomly I would expect 9 seconds. (320 > MB/34 MB/sec random writes == 9 seconds) > > > INFO [COMPACTION-POOL:1] 2010-09-14 20:40:39,120 CompactionManager.java > (line 320) Compacted to > /data/cassandra/data/TimeFrameClicks/Standard2-1155-Data.db. > 339681221/339679627 bytes for 1253279 keys. Time: 18645ms. > INFO [SSTABLE-CLEANUP-TIMER] 2010-09-14 21:14:49,518 > SSTableDeletingReference.java (line 104) Deleted > /data/cassandra/data/TimeFrameClicks/Standard2-1154-Data.db > INFO [SSTABLE-CLEANUP-TIMER] 2010-09-14 21:14:49,547 > SSTableDeletingReference.java (line 104) Deleted > /data/cassandra/data/TimeFrameClicks/Standard2-1152-Data.db > INFO [SSTABLE-CLEANUP-TIMER] 2010-09-14 21:14:49,574 > SSTableDeletingReference.java (line 104) Deleted > /data/cassandra/data/TimeFrameClicks/Standard2-1153-Data.db > INFO [SSTABLE-CLEANUP-TIMER] 2010-09-14 21:14:49,603 > SSTableDeletingReference.java (line 104) Deleted > /data/cassandra/data/TimeFrameClicks/Standard2-1151-Data.db > INFO [ROW-MUTATION-STAGE:6] 2010-09-14 22:24:33,320 ColumnFamilyStore.java > (line 357) Standard2 has reached its threshold; switching in a fresh > Memtable at > CommitLogContext(file='/data/cassandra/commitlog/CommitLog-1284496449043.log', > position=68512986) > INFO [ROW-MUTATION-STAGE:6] 2010-09-14 22:24:33,320 ColumnFamilyStore.java > (line 609) Enqueuing flush of memtable-standa...@798596883(11324628 bytes, > 314573 operations) > INFO [FLUSH-WRITER-POOL:1] 2010-09-14 22:24:33,321 Memtable.java (line 148) > Writing memtable-standa...@798596883(11324628 bytes, 314573 operations) > INFO [FLUSH-WRITER-POOL:1] 2010-09-14 22:24:38,974 Memtable.java (line 162) > Completed flushing > /data/cassandra/data/TimeFrameClicks/Standard2-1156-Data.db > INFO [COMPACTION-POOL:1] 2010-09-14 22:25:19,326 CompactionManager.java > (line 246) Compacting > [org.apache.cassandra.io.SSTableReader(path='/data/cassandra/data/TimeFrameClicks/Standard2-1156-Data.db'),org.apache.cassandra.io.SSTableReader(path='/data/cassandra/data/TimeFrameClicks/Standard2-1129-Data.db'),org.apache.cassandra.io.SSTableReader(path='/data/cassandra/data/TimeFrameClicks/Standard2-1150-Data.db'),org.apache.cassandra.io.SSTableReader(path='/data/cassandra/data/TimeFrameClicks/Standard2-1108-Data.db'),org.apache.cassandra.io.SSTableReader(path='/data/cassandra/data/TimeFrameClicks/Standard2-1023-Data.db'),org.apache.cassandra.io.SSTableReader(path='/data/cassandra/data/TimeFrameClicks/Standard2-1155-Data.db')] > INFO [GC inspection] 2010-09-14 22:25:21,236 GCInspector.java (line 116) GC > for ConcurrentMarkSweep: 1825 ms, 650770408 reclaimed leaving 472796832 > used; max is 7645888512 > INFO [GC inspection] 2010-09-14 22:25:21,237 GCInspector.java (line 137) > Pool Name Active Pending > INFO [GC inspection] 2010-09-14 22:25:21,238 GCInspector.java (line 143) > STREAM-STAGE 0 0 > INFO [GC inspection] 2010-09-14 22:25:21,238 GCInspector.java (line 143) > FILEUTILS-DELETE-POOL 0 0 > INFO [GC inspection] 2010-09-14 22:25:21,238 GCInspector.java (line 143) > RESPONSE-STAGE 0 0 > INFO [GC inspection] 2010-09-14 22:25:21,239 GCInspector.java (line 143) > ROW-READ-STAGE 1 5 > INFO [GC inspection] 2010-09-14 22:25:21,239 GCInspector.java (line 143) > LB-OPERATIONS 0 0 > INFO [GC inspection] 2010-09-14 22:25:21,239 GCInspector.java (line 143) > GMFD 0 3 > INFO [GC inspection] 2010-09-14 22:25:21,240 GCInspector.java (line 143) > MESSAGE-DESERIALIZER-POOL 0 121 > INFO [GC inspection] 2010-09-14 22:25:21,240 GCInspector.java (line 143) > CONSISTENCY-MANAGER 0 7 > INFO [GC inspection] 2010-09-14 22:25:21,240 GCInspector.java (line 143) > LB-TARGET 0 0 > INFO [GC inspection] 2010-09-14 22:25:21,240 GCInspector.java (line 143) > ROW-MUTATION-STAGE 0 0 > INFO [GC inspection] 2010-09-14 22:25:21,241 GCInspector.java (line 143) > MESSAGE-STREAMING-POOL 0 0 > INFO [GC inspection] 2010-09-14 22:25:21,241 GCInspector.java (line 143) > LOAD-BALANCER-STAGE 0 0 > INFO [GC inspection] 2010-09-14 22:25:21,241 GCInspector.java (line 143) > FLUSH-SORTER-POOL 0 0 > INFO [GC inspection] 2010-09-14 22:25:21,242 GCInspector.java (line 143) > MEMTABLE-POST-FLUSHER 0 0 > INFO [GC inspection] 2010-09-14 22:25:21,242 GCInspector.java (line 143) > AE-SERVICE-STAGE 0 0 > INFO [GC inspection] 2010-09-14 22:25:21,243 GCInspector.java (line 143) > FLUSH-WRITER-POOL 0 0 > INFO [GC inspection] 2010-09-14 22:25:21,243 GCInspector.java (line 143) > HINTED-HANDOFF-POOL 0 0 > INFO [GC inspection] 2010-09-14 22:25:21,244 GCInspector.java (line 148) > CompactionManager n/a 0 > INFO [COMPACTION-POOL:1] 2010-09-14 22:38:13,035 CompactionManager.java > (line 320) Compacted to > /data/cassandra/data/TimeFrameClicks/Standard2-1157-Data.db. > 13065811194/8886372187 bytes for 32990587 keys. Time: 773708ms. > INFO [COMPACTION-POOL:1] 2010-09-14 22:40:23,776 CompactionManager.java > (line 246) Compacting > [org.apache.cassandra.io.SSTableReader(path='/data/cassandra/data/TimeFrameClicks/Standard2-1157-Data.db')] > INFO [COMPACTION-POOL:1] 2010-09-14 22:54:20,197 CompactionManager.java > (line 320) Compacted to > /data/cassandra/data/TimeFrameClicks/Standard2-1158-Data.db. > 8886372187/8886372187 bytes for 32990587 keys. Time: 836420ms. > INFO [SSTABLE-CLEANUP-TIMER] 2010-09-14 23:26:54,242 > SSTableDeletingReference.java (line 104) Deleted > /data/cassandra/data/TimeFrameClicks/Standard2-1157-Data.db > INFO [SSTABLE-CLEANUP-TIMER] 2010-09-14 23:26:54,422 > SSTableDeletingReference.java (line 104) Deleted > /data/cassandra/data/TimeFrameClicks/Standard2-1156-Data.db > INFO [SSTABLE-CLEANUP-TIMER] 2010-09-14 23:26:56,137 > SSTableDeletingReference.java (line 104) Deleted > /data/cassandra/data/TimeFrameClicks/Standard2-1129-Data.db > INFO [SSTABLE-CLEANUP-TIMER] 2010-09-14 23:26:59,458 > SSTableDeletingReference.java (line 104) Deleted > /data/cassandra/data/TimeFrameClicks/Standard2-1108-Data.db > INFO [SSTABLE-CLEANUP-TIMER] 2010-09-14 23:27:01,106 > SSTableDeletingReference.java (line 104) Deleted > /data/cassandra/data/TimeFrameClicks/Standard2-1150-Data.db > INFO [SSTABLE-CLEANUP-TIMER] 2010-09-14 23:27:12,050 > SSTableDeletingReference.java (line 104) Deleted > /data/cassandra/data/TimeFrameClicks/Standard2-1023-Data.db > INFO [SSTABLE-CLEANUP-TIMER] 2010-09-14 23:27:12,534 > SSTableDeletingReference.java (line 104) Deleted > /data/cassandra/data/TimeFrameClicks/Standard2-1155-Data.db > > > > > > > > -- Jonathan Ellis Project Chair, Apache Cassandra co-founder of Riptano, the source for professional Cassandra support http://riptano.com