Lots of SliceQueryFilter in the log, is that handling tombstone? DEBUG [ReadStage:49] 2011-10-03 20:15:07,942 SliceQueryFilter.java (line 123) collecting 0 of 1: 1317582939743663:true:4@1317582939933000 DEBUG [ReadStage:50] 2011-10-03 20:15:07,942 SliceQueryFilter.java (line 123) collecting 0 of 1: 1317573253148778:true:4@1317573253354000 DEBUG [ReadStage:43] 2011-10-03 20:15:07,942 SliceQueryFilter.java (line 123) collecting 0 of 1: 1317669552951428:true:4@1317669553018000 DEBUG [ReadStage:33] 2011-10-03 20:15:07,942 SliceQueryFilter.java (line 123) collecting 0 of 1: 1317581886709261:true:4@1317581886957000 DEBUG [ReadStage:52] 2011-10-03 20:15:07,942 SliceQueryFilter.java (line 123) collecting 0 of 1: 1317568165152246:true:4@1317568165482000 DEBUG [ReadStage:36] 2011-10-03 20:15:07,941 SliceQueryFilter.java (line 123) collecting 0 of 1: 1317567265089211:true:4@1317567265405000 DEBUG [ReadStage:53] 2011-10-03 20:15:07,941 SliceQueryFilter.java (line 123) collecting 0 of 1: 1317674324843122:true:4@1317674324946000 DEBUG [ReadStage:38] 2011-10-03 20:15:07,941 SliceQueryFilter.java (line 123) collecting 0 of 1: 1317571990078721:true:4@1317571990141000 DEBUG [ReadStage:57] 2011-10-03 20:15:07,941 SliceQueryFilter.java (line 123) collecting 0 of 1: 1317671855234221:true:4@1317671855239000 DEBUG [ReadStage:54] 2011-10-03 20:15:07,941 SliceQueryFilter.java (line 123) collecting 0 of 1: 1317558305262954:true:4@1317558305337000 DEBUG [RequestResponseStage:11] 2011-10-03 20:15:07,941 ResponseVerbHandler.java (line 48) Processing response on a callback from 12347@/10.210.101.104 DEBUG [RequestResponseStage:9] 2011-10-03 20:15:07,941 AbstractRowResolver.java (line 66) Preprocessed data response DEBUG [RequestResponseStage:13] 2011-10-03 20:15:07,941 AbstractRowResolver.java (line 66) Preprocessed digest response DEBUG [ReadStage:58] 2011-10-03 20:15:07,941 SliceQueryFilter.java (line 123) collecting 0 of 1: 1317581337972739:true:4@1317581338044000 DEBUG [ReadStage:64] 2011-10-03 20:15:07,941 SliceQueryFilter.java (line 123) collecting 0 of 1: 1317582656796332:true:4@1317582656970000 DEBUG [ReadStage:55] 2011-10-03 20:15:07,941 SliceQueryFilter.java (line 123) collecting 0 of 1: 1317569432886284:true:4@1317569432984000 DEBUG [ReadStage:45] 2011-10-03 20:15:07,941 SliceQueryFilter.java (line 123) collecting 0 of 1: 1317572658687019:true:4@1317572658718000 DEBUG [ReadStage:47] 2011-10-03 20:15:07,940 SliceQueryFilter.java (line 123) collecting 0 of 1: 1317582281617755:true:4@1317582281717000 DEBUG [ReadStage:48] 2011-10-03 20:15:07,940 SliceQueryFilter.java (line 123) collecting 0 of 1: 1317549607869226:true:4@1317549608118000 DEBUG [ReadStage:34] 2011-10-03 20:15:07,940 SliceQueryFilter.java (line 123) collecting 0 of 1: On Thu, Sep 29, 2011 at 2:17 PM, aaron morton <aa...@thelastpickle.com>wrote:
> As with any situation involving the un-dead, it really is the number of > Zombies, Mummies or Vampires that is the concern. > > If you delete data there will always be tombstones. If you have a delete > heavy workload there will be more tombstones. This is why implementing a > queue with cassandra is a bad idea. > > gc_grace_seconds (and column TTL) are the *minimum* about of time the > tombstones will stay in the data files, there is no maximum. > > Your read performance also depends on the number of SSTables the row is > spread over, see > http://thelastpickle.com/2011/04/28/Forces-of-Write-and-Read/ > > If you really wanted to purge them then yes a repair and then major > compaction would be the way to go. Also consider if it's possible to design > the data model around the problem, e.g. partitioning rows by date. IMHO I > would look to make data model changes before implementing a compaction > policy, or consider if cassandra is the right store if you have a delete > heavy workload. > > Cheers > > > ----------------- > Aaron Morton > Freelance Cassandra Developer > @aaronmorton > http://www.thelastpickle.com > > On 30/09/2011, at 3:27 AM, Daning Wang wrote: > > Jonathan/Aaron, > > Thank you guy's reply, I will change GCGracePeriod to 1 day to see what > will happen. > > Is there a way to purge tombstones at anytime? because if tombstones affect > performance, we want them to be purged right away, not after GCGracePeriod. > We know all the nodes are up, and we can do repair first to make sure the > consistency before purging. > > Thanks, > > Daning > > > On Wed, Sep 28, 2011 at 5:22 PM, aaron morton <aa...@thelastpickle.com>wrote: > >> if I had to guess I would say it was spending time handling tombstones. If >> you see it happen again, and are interested, turn the logging up to DEBUG >> and look for messages from something starting with "Slice" >> >> Minor (automatic) compaction will, over time, purge the tombstones. Until >> then reads must read discard the data deleted by the tombstones. If you >> perform a big (i.e. 100k's ) delete this can reduce performance until >> compaction does it's thing. >> >> My second guess would be read repair (or the simple consistency checks on >> read) kicking in. That would show up in the "ReadRepairStage" in TPSTATS >> >> it may have been neither of those two things, just guesses. If you have >> more issues let us know and provide some more info. >> >> Cheers >> >> >> ----------------- >> Aaron Morton >> Freelance Cassandra Developer >> @aaronmorton >> http://www.thelastpickle.com >> >> On 29/09/2011, at 6:35 AM, Daning wrote: >> >> > I have an app polling a few CFs (select first N * from CF), there were >> data in CFs but later were deleted so CFs were empty for a long time. I >> found Cassandra CPU usage was getting high to 80%, normally it uses less >> than 30%. I issued the select query manually and feel the response is slow. >> I have tried nodetool compact/repair for those CFs but that does not work. >> later, I issue 'truncate' for all the CFs and CPU usage gets down to 1%. >> > >> > Can somebody explain to me why I need to truncate an empty CF? and what >> else I could do to bring the CPU usage down? >> > >> > I am running 0.8.6. >> > >> > Thanks, >> > >> > Daning >> > >> >> > >