My understanding of a 9 second GC seems to be very off based on the gossip 
logs.  Correct me if im wrong, but the “handshaking version” is just a log for 
it to attempt to connect to the other nodes?

Manual FGC

2:01:02 - Node1  full GC
2:01:25 - Node2  detects node1 DOWN
2:01:27 - Node2  handshaking version with Node1
2:01:32 - Node2  handshaking version with Node1 because failed previously
2:01:37 - Node2  handshaking version with Node1 because failed previously
2:01:39 - Node2  detects Node1 UP

Production FGC

9:30:45  - Node1 full gc
9:30:47 - Node2  detects Node1 DOWN
9:30:55 - handshaking version with Node1
9:31:00  - handshaking version with Node1 because failed previously
9:31:05 - handshaking version with Node1 because failed previously
9:31:10  - handshaking version with Node1 because failed previously
9:31:15  - handshaking version with Node1 because failed previously
9:31:20  - handshaking version with Node1 because failed previously
9:31:37 - Node2 – detects Node1 UP


From: Mark Reddy [mailto:mark.re...@boxever.com]
Sent: Wednesday, July 30, 2014 9:41 AM
To: user@cassandra.apache.org
Subject: Re: bootstrapping new nodes on 1.2.12

Our Full GC’s take about 9 seconds.  If we were to increase the 
phi_convict_threshold to not take a node offline for a 9 second unavailability, 
what negative side effects can there be?

When you observe these GC's do you also see the node being marked down and then 
back up ~9 seconds later? GC's can often happen and have no effect on gossip 
marking a node as down, in which case the streaming session will remain intact. 
The side effect of long GC's is increased latency from that node during that 
period.


Mark

On Wed, Jul 30, 2014 at 2:24 PM, Parag Patel 
<ppa...@clearpoolgroup.com<mailto:ppa...@clearpoolgroup.com>> wrote:
As to why we do it, we need to reevaluate because the GC optimizations we’ve 
made recently probably don’t require it anymore.  However, prior to our 
optimizations we observed a benefit at our peak time. When we force a GC, we 
don’t remove it from the ring.  This seems like a fundamental flaw in our 
approach.  Thanks for pointing this out.  For the purposes of bootstrapping, we 
will disable the manual GC’s to make sure we don’t interrupt the joining 
process.  However, one unpredictable problem can always remain – a Full GC 
happens causing the node to go offline and causing the bootstrap to fail.  To 
solve this, we’ll try increasing the phi_convict_threshold.

Our Full GC’s take about 9 seconds.  If we were to increase the 
phi_convict_threshold to not take a node offline for a 9 second unavailability, 
what negative side effects can there be?

Parag


From: Mark Reddy [mailto:mark.re...@boxever.com<mailto:mark.re...@boxever.com>]
Sent: Wednesday, July 30, 2014 9:06 AM

To: user@cassandra.apache.org<mailto:user@cassandra.apache.org>
Subject: Re: bootstrapping new nodes on 1.2.12

HI Parag,

I see this output my log many times over for 2 nodes.  We have a cron entry 
across all clusters that force a full GC at 2 AM.  node1 is due to Full GC that 
was scheduled (I can disable this).  Node2 was due to a Full GC that occurred 
during our peak operation (these happen occasionally, we’ve been working to 
reduce them).

Firstly, why are you forcing a GC? Do you have sufficient evidence that 
Cassandra is not managing the heap in the way in which your application 
requires?

Also how are you accomplishing this full GC? Are you removing the node from the 
ring, forcing a GC and then adding it back in? Or are you forcing a GC while it 
is in the ring?

1)      Will any node leaving the cluster while streaming force us to bootsrap 
all over again?  If so, is this addressed in future versions?

If the node that is leaving the ring is streaming data to  the bootstrapping 
node, yes, this will break the streaming session and no further streams will be 
started from that node. To my knowledge, there is nothing in newer / future 
versions that will prevent this.


2)      We have too much data to migrate to run on non-production hours.  How 
do we make it such that full GC’s don’t impact bootstrapping?  Should we 
increase phi_convict_threshold ?

Again I'll need some more information around these manual GC's. But yes, 
increasing the phi value would reduce the chance of a node in the ring being 
marked down during a heavy gc cycle.


Mark

On Wed, Jul 30, 2014 at 1:41 PM, Parag Patel 
<ppa...@clearpoolgroup.com<mailto:ppa...@clearpoolgroup.com>> wrote:
Mark,

I see this output my log many times over for 2 nodes.  We have a cron entry 
across all clusters that force a full GC at 2 AM.  node1 is due to Full GC that 
was scheduled (I can disable this).  Node2 was due to a Full GC that occurred 
during our peak operation (these happen occasionally, we’ve been working to 
reduce them).  Few Questions


1)      Will any node leaving the cluster while streaming force us to bootsrap 
all over again?  If so, is this addressed in future versions?

2)      We have too much data to migrate to run on non-production hours.  How 
do we make it such that full GC’s don’t impact bootstrapping?  Should we 
increase phi_convict_threshold ?

Parag



From: Mark Reddy [mailto:mark.re...@boxever.com<mailto:mark.re...@boxever.com>]
Sent: Wednesday, July 30, 2014 7:58 AM

To: user@cassandra.apache.org<mailto:user@cassandra.apache.org>
Subject: Re: bootstrapping new nodes on 1.2.12

Thanks for the detailed response.  I checked ‘nodetool netstats’ and I see 
there are pending streams, all of which are stuck at 0%.  I was expecting to 
see at least one output that was more than 0%.  Have you seen this before?

This could indicate that the bootstrap process is hung due to a failed 
streaming session. Can you check your logs for the following line:

AbstractStreamSession.java (line 110) Stream failed because /xxx.xxx.xxx.xxx 
died or was restarted/removed (streams may still be active in background, but 
further streams won't be started)

If that is the case you will need to wipe the node and begin the bootstrapping 
process again


Mark


On Wed, Jul 30, 2014 at 12:03 PM, Parag Patel 
<ppa...@clearpoolgroup.com<mailto:ppa...@clearpoolgroup.com>> wrote:
Thanks for the detailed response.  I checked ‘nodetool netstats’ and I see 
there are pending streams, all of which are stuck at 0%.  I was expecting to 
see at least one output that was more than 0%.  Have you seen this before?

Side question – does a new node stream from other nodes in any particular 
order?  Perhaps this is a coincidence, but if I were to sort my hostnames in 
alphabetical order, it’s currently streaming from the last 2.

From: Mark Reddy [mailto:mark.re...@boxever.com<mailto:mark.re...@boxever.com>]
Sent: Wednesday, July 30, 2014 4:42 AM
To: user@cassandra.apache.org<mailto:user@cassandra.apache.org>
Subject: Re: bootstrapping new nodes on 1.2.12

Hi Parag,

1)      Would anyone be able to help me interrupt this information from 
OpsCenter?

At a high level bootstrapping a new node has two phases, streaming and 
secondary index builds. I believe OpsCenter will only report active streams, 
the pending stream will be listed as such in OpsCenter as well. In OpsCenter 
rather than looking at the Data Size check the used space on the Storage 
Capacity pie chart, this will show how much data is on disk but not necessarily 
live on the node yet.

Personally I would check 'nodetool netstats' to see what streams are remaining, 
this will list all active / pending stream and what files are to be streamed, 
at the moment you might just be streaming some very large files and once 
complete you will see a dramatic increase in data size.

If streaming is complete and you use secondary indexes, check 'nodetool 
compcationstats' for any secondary index builds that may be taking place.


2)      Is there anything I can do to speed this up?

If you have the capacity you could increase 
stream_throughput_outbound_megabits_per_sec in your cassandra.yaml

If you don't have the capacity you could add more nodes to spread the data so 
you stream less in future.

Finally you could upgrade to 2.0.x as it contains a complete refactor of 
streaming and should make your streaming sessions more robust and transparent: 
https://issues.apache.org/jira/browse/CASSANDRA-5286


Mark

On Wed, Jul 30, 2014 at 3:15 AM, Parag Patel 
<ppa...@clearpoolgroup.com<mailto:ppa...@clearpoolgroup.com>> wrote:
Hi,

It’s taking a while to boostrap a 13th node into a 12 node cluster.  The 
average node size is about 1.7TB.  At the beginning of today we were close to 
.9TB on the new node and 12 hours later we’re at 1.1TB.  I figured it would 
have finished by now because when I was looking on OpsCenter, there were 2 
transfers remaining.  1 was at 0% and the other was at 2%.  I look again now 
and those same nodes haven’t progressed all day.  Instead I see 9 more 
transfers (some of which are progressing).


1)      Would anyone be able to help me interrupt this information from 
OpsCenter?

2)      Is there anything I can do to speed this up?

Thanks,
Parag






Reply via email to