<div dir="ltr">Hello Steve,<div><br></div><div><div class="gmail_extra"><div class="gmail_quote">On Mon, Jul 10, 2017 at 4:14 PM, Steve Cohen <span dir="ltr"><<a href="mailto:scohen@discordapp.com" target="_blank">scohen@discordapp.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><span style="background-color:rgb(255,255,255)"><font color="#000000">Now, when one of our guild servers dies, as expected it generates a large number of DOWN messages to the sessions cluster. These messages bog down the sessions servers (obviously) while they process them, but when they're done processing, distribution appears to be completely broken. </font></span><div dir="ltr"><br></div></blockquote><div><br></div><div>On Thu, Jul 13, 2017 at 1:10 AM, Steve Cohen <span dir="ltr"><<a href="mailto:scohen@discordapp.com" target="_blank">scohen@discordapp.com</a>></span> wrote: </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">Here's the sequence of events:</div></blockquote><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>1. One of our machines was inadvertently shut off, killing all of the processes on it</div><div>2. We immediately saw a drop in CPU across the board on the sessions cluster. CPU on the sessions cluster eventually went to zero.</div><div>3. We were completely unable to use remote console on any of the machines in the cluster, and they all needed to be restarted.</div></div></blockquote><div><br></div><div>The two scenarios you are describing seem to contradict each other? First you talk about the sessions servers being bogged down, and then that the CPU of the sessions cluster went to almost zero? What is it that I'm missing?</div><div><br></div><div>Did you gather any port mortem dumps from these machines? i.e. a erl_crash.dump or a core dump?</div><div><br></div><div>Also you have forgotten to mention what version of Erlang/OTP that you are using.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>So, to answer your question, we don't know how long it took for down messages to be processed, since we didn't have visibility at the time.  We suspected a problem with the net_ticktime, but what's confusing to us is that the host that went down went down hard, so the DOWN events should have been created on the other nodes, not sent across distribution (correct me if I'm wrong here).<br></div></div></blockquote><div><br></div><div>When a TCP connection used for the erlang distribution is terminated, all the down messages are (as you say) generated locally. </div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>Also, my intuition is that processing DOWN messages would cause CPU usage on the cluster to go up, but we saw the exact opposite.  </div><div><br></div></div></blockquote><div><br></div><div>With the poweroff of the machine, are you sure that the TCP layer caught the shutdown? If it didn't, then the next fail-safe is the net_ticktime.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div></div><div>Since we couldn't connect to the machines via remote console, we couldn't call connect_node. It was my understanding that the connect call would happen when the node in question reestablished itself. </div></div></blockquote><div><br></div><div>Yes, it should re-connect when needed. It is quite strange that you couldn't connect via remote shell. A crash dump or core dump would really help to understand what is going on.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div><br></div></div><div class="gmail_extra"><div><div class="gmail-h5"><br><div class="gmail_quote">On Tue, Jul 11, 2017 at 8:34 PM, Juan Jose Comellas <span dir="ltr"><<a href="mailto:juanjo@comellas.org" target="_blank">juanjo@comellas.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">How long does it take for all the DOWN messages to be sent/processed?<div><br></div><div>These messages might not be allowing the net tick messages (see <font face="monospace, monospace">net_ticktime</font> in <a href="http://erlang.org/doc/man/kernel_app.html" target="_blank">http://erlang.org/doc/man/kern<wbr>el_app.html</a>) to be responded in time. If this happens, the node that isn't able to respond before the <font face="monospace, monospace">net_ticktime</font> expires will be assumed to be disconnected.</div><div><br></div><div>What happens if after processing all the DOWN messages you issue a call to <font face="monospace, monospace">net_kernel:connect_node/1</font> for each of the nodes that seems to be down?</div></div><div class="gmail_extra"><br><div class="gmail_quote"><div><div class="gmail-m_6012173522151130881h5">On Mon, Jul 10, 2017 at 4:14 PM, Steve Cohen <span dir="ltr"><<a href="mailto:scohen@discordapp.com" target="_blank">scohen@discordapp.com</a>></span> wrote:<br></div></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div><div class="gmail-m_6012173522151130881h5"><div dir="ltr">Hi all,<div><br></div><div>We have 12 nodes in a our guilds cluster, and on each, 500,000 processes.  We have another cluster that has 15 nodes with roughly four million processes on it, called sessions. Both clusters are in the same erlang distribution since our guilds monitor sessions and vice-versa.</div><div><br></div><div>Now, when one of our guild servers dies, as expected it generates a large number of DOWN messages to the sessions cluster. These messages bog down the sessions servers (obviously) while they process them, but when they're done processing, distribution appears to be completely broken. </div><div> <br clear="all"><div>By broken, I mean that the nodes are disconnected from one another, they're not exchanging messages, CPU usage was 0 and we couldn't even launch the remote console. </div><div><br></div><div>I can't imagine this is expected behavior, and was wondering if someone can shed some light on it.</div><div>We're open to the idea that we're doing something very, very wrong.</div><div><br></div><div><br></div><div>Thanks in advance for the help</div><span class="gmail-m_6012173522151130881m_-2169475019866148019HOEnZb"><font color="#888888"><div><br></div>-- <br><div class="gmail-m_6012173522151130881m_-2169475019866148019m_7580302084062849632gmail_signature"><div dir="ltr">Steve Cohen</div></div>
</font></span></div></div>
<br></div></div>______________________________<wbr>_________________<br>
erlang-questions mailing list<br>
<a href="mailto:erlang-questions@erlang.org" target="_blank">erlang-questions@erlang.org</a><br>
<a href="http://erlang.org/mailman/listinfo/erlang-questions" rel="noreferrer" target="_blank">http://erlang.org/mailman/list<wbr>info/erlang-questions</a><br>
<br></blockquote></div><br></div>
</blockquote></div><br><br clear="all"><div><br></div></div></div><span class="gmail-HOEnZb"><font color="#888888">-- <br><div class="gmail-m_6012173522151130881gmail_signature"><div dir="ltr">-Steve</div></div>
</font></span></div>
<br>______________________________<wbr>_________________<br>
erlang-questions mailing list<br>
<a href="mailto:erlang-questions@erlang.org">erlang-questions@erlang.org</a><br>
<a href="http://erlang.org/mailman/listinfo/erlang-questions" rel="noreferrer" target="_blank">http://erlang.org/mailman/<wbr>listinfo/erlang-questions</a><br>
<br></blockquote></div><br></div></div></div>