<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><div>On 9-Feb-2010, at 07:58, Fabio Ricci wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div dir="ltr"><small><big>At each crash we have a mnesia coredump<br>
the reason why is crashing is in the ejabberd.log file:<br>
=ERROR REPORT==== 2010-02-04 21:44:23 ===<br>
<i><small>Mnesia('<a class="moz-txt-link-abbreviated" href="mailto:ejabberd@lol-jabbr001-prod.lls21.vda.goa">ejabberd@jabbr001</a>'): ** ERROR
** (core dumped to file:
<a class="moz-txt-link-rfc2396E" href="mailto:/data/ejabberd/bin/MnesiaCore.ejabberd@lol-jabbr001-prod.lls21.vda.goa_1265_316263_657059">"/data/ejabberd/bin/MnesiaCore.ejabberd@jabbr001_1265_316263_657059"</a>)<br>


&nbsp;** FATAL ** Cannot open log file
<a class="moz-txt-link-rfc2396E" href="mailto:/data/ejabberd/database/ejabberd@lol-jabbr001-prod.lls21.vda.goa/PREVIOUS.LOG">"/data/ejabberd/database/ejabberd@jabbr001/PREVIOUS.LOG"</a>:
{file_error,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<a class="moz-txt-link-rfc2396E" href="mailto:/data/ejabberd/database/ejabberd@lol-jabbr001-prod.lls21.vda.goa/PREVIOUS.LOG">"/data/ejabberd/database/ejabberd@jabbr001/PREVIOUS.LOG"</a>,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<b>system_limit</b>}</small></i><br></big></small></div></blockquote><div><br></div><div><span class="Apple-tab-span" style="white-space:pre">        </span>I have seen these many times when using BOSH or other http modules. I submitted a fix for this in early December, which was applied to the 2.1.x branch (see:&nbsp;<a href="https://support.process-one.net/browse/EJAB-1119">https://support.process-one.net/browse/EJAB-1119</a>).</div><br><blockquote type="cite"><div dir="ltr"><small><big>
We have noticed a lot of this messages from the last maintenance:<br>
<br>
<i><small>=ERROR REPORT==== 2010-02-09 13:11:20 ===<br>
Mnesia('<a class="moz-txt-link-abbreviated" href="mailto:ejabberd@lol-jabbr001-prod.lls21.vda.goa">ejabberd@jabbr001</a>'): ** WARNING **
Mnesia is overloaded: {dump_log,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
write_threshold}</small></i><br></big></small></div></blockquote><div><br></div><div><span class="Apple-tab-span" style="white-space:pre">        </span>I'm not sure how dangerous this is. I see the issue fairly regularly, but it doesn't seem to cause me any harm.</div><br><blockquote type="cite"><div dir="ltr"><small><big>My idea is that we are reaching some system_limit internal to ejabber
(there are no limits on the host itself, memory cpu and i/o are ok)<br></big></small></div></blockquote><div><br></div><div><span class="Apple-tab-span" style="white-space:pre">        </span>You're reaching the max port limit. If you're interested, I have a perl script which I used to track down the BOSH issue. All it does is watch the ejabberd log file and whenever it sees "system_limit" it connected to the node and halted it in such a way that I would get an Erlang runtime dump. Using that dump you can see exactly which process is consuming too many ports.</div><br><blockquote type="cite"><div dir="ltr"><small><big>
Talking about limit we can also see errors like this just before the
crash happen:<br>
<i><small>=ERROR REPORT==== 2010-02-08 20:38:12 ===<br>
** Generic server &lt;0.24022.18&gt; terminating <br>
** Last message in was {become_controller,&lt;0.24023.18&gt;}<br>
** When Server state == {state,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
{tlssock,#Port&lt;0.4195053&gt;,#Port&lt;0.4196250&gt;},<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tls,none,undefined,65536,<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
{xml_stream_state,undefined,#Port&lt;0.4208404&gt;,[],<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0,65536},<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; infinity}<br>
** Reason for termination == <br>
** {<b>system_limit,[{erlang,open_port,</b>[{spawn,expat_erl},[binary]]},<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {xml_stream,new,2},<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {ejabberd_receiver,handle_call,3},<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {gen_server,handle_msg,5},<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {proc_lib,init_p,5}]}</small></i><br>
<br>
This may say that the limit is in the erlang open_port.<br>
If we look at our configuration we have <br></big></small></div></blockquote><div><br></div><div><span class="Apple-tab-span" style="white-space:pre">        </span>See above.</div><br><blockquote type="cite"><div dir="ltr"><small><big>
<br>
<i><small># ERL_MAX_PORTS: Maximum number of simultaneously open Erlang
ports<br>
#<br>
# ejabberd consumes two or three ports for every connection, either <br>
# from a client or from another Jabber server. So take this into<br>
# account when setting this limit.<br>
#<br>
# Default: 32000<br>
# Maximum: 268435456<br>
#<br>
ERL_MAX_PORTS=32000<br>
<br>
</small></i><small><big>This is set to the minimum. I think that
raising this parameter can be worth a try.<br></big></small></big></small></div></blockquote><div><br></div><div><span class="Apple-tab-span" style="white-space:pre">        </span>Unless you have around 32k connected users then you're probably running into a leak. If you have that many users (or more) then raising the number of open ports will help. In general, you need ~1 port per TLS connection, in addition to a few dozen as a baseline.</div></div><br><div>-bjc</div></body></html>