<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body text="#000000" bgcolor="#FFFFFF">
<tt>Hi, Ravitez!<br>
<br>
As I said, unfortunately there is no way to prevent OpenSIPS from
doing this.<br>
The only thing I can think of is to somehow "delay" the connect by
randomly delay processing. I know this is not the best solution,
but unfortunately there's nothing to do with the current design.<br>
<br>
Best regards,<br>
</tt>
<pre class="moz-signature" cols="72">Răzvan Crainea
OpenSIPS Solutions
<a class="moz-txt-link-abbreviated" href="http://www.opensips-solutions.com">www.opensips-solutions.com</a></pre>
<div class="moz-cite-prefix">On 05/12/2017 01:55 AM, Ravitez Ravi
wrote:<br>
</div>
<blockquote type="cite"
cite="mid:CANs_LF9yqB52ijw+5C7229+1pw-OYCP0A0qCyAmkG=cirNuRkg@mail.gmail.com">
<div dir="ltr">Hello Razvan,
<div> Good Day,</div>
<div> Would like to bring up that if
children(workes) try to create TCP connections without a
locking mechanism we may hit TCP connection limit and not
process or handle valid requests</div>
<div><br>
</div>
<div>eg :</div>
<div>tcp_max_connections=10;</div>
<div>tcp_connection_lifetime=43200;</div>
<div>
<div>tcp_children=32</div>
<div> </div>
<div> Considering the above configuration
with the existing framework we can use up all 10 connections
and then reject new connections.</div>
<div> Please advise.Thank you :)</div>
<div><br>
</div>
<div><br>
</div>
<div>Regard,</div>
<div>Ravitez.D</div>
<div><br>
</div>
<div class="gmail_extra"><br>
<div class="gmail_quote">On Tue, May 9, 2017 at 10:20 AM,
Ravitez Ravi <span dir="ltr"><<a
href="mailto:ravitez.dondeti@gmail.com"
target="_blank" moz-do-not-send="true">ravitez.dondeti@gmail.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">
<div dir="ltr">Hello Razvan,
<div> God Day,</div>
<div> Thank you for the update,it
seems that though we create multiple TCP connections
opensips uses only one tcp connection to send the
data out.</div>
<div> should a child be locking the
tcp connection mechanism? while creating a new tcp
connection as we will be overwriting the
tcpconn_aliases_has to the</div>
<div> latest/recent fd. </div>
<div><br>
</div>
<div>
<blockquote type="cite">
<div dir="ltr">
<div> I believe here's the root cause :</div>
<div> - When a child tries to find a
connection to the destination it
calls _tcpconn_find() (assuming we are using
ip and not id) system checks <u><i><b>tcpconn_aliases_hash
</b></i></u>for the connection info.<br>
</div>
<div> <b><i> this map is maintained by the
parent process and each child lock its
while reaing tcpconn_get().in order to
simulate the scenario lets assume a-><span
style="color:rgb(128,0,0)">parent</span>-><font
color="#800000">state is BAD </font><font
color="#000000">this method</font></i></b></div>
<div><font color="#000000"><b><i> will
return null and so the child tries to
create a new connections,assuming
there's a second child trying to find
the same connections and goes
through the same process</i></b></font></div>
<div><font color="#000000"><br>
</font></div>
<div><font color="#000000"> - <b><i>Now each
child thinks there's no connection to
the destination and calls
tcpconn_connect() this will create a
socket to the destination and passes
over the fd to the </i></b></font></div>
<div><font color="#000000"><b><i> main
process to update the has map.</i></b></font></div>
<div><font color="#000000"><br>
</font></div>
<div><font color="#000000"> - <b><i>Not sure
if tcp_connect() should have locking
mechanism as in tcpconn_get().</i></b></font></div>
</div>
</blockquote>
</div>
<div>
<div class="gmail_extra"> Thank you :)</div>
<div class="gmail_extra"><br>
</div>
<div class="gmail_extra">Regards,</div>
<div class="gmail_extra">Ravitez.D</div>
<div class="gmail_extra"><br>
<div class="gmail_quote">On Mon, May 8, 2017 at
10:48 AM, Răzvan Crainea <span dir="ltr"><<a
href="mailto:razvan@opensips.org"
target="_blank" moz-do-not-send="true">razvan@opensips.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 bgcolor="#FFFFFF"> <tt>Hi, Ravitez!<br>
<br>
You are right - if opensips gets multiple
messages in parallel that need to get to a
single destination, each process will open
a different connection to that
destination. However, all sequential
messages will use a single TCP connection.<br>
Synchronizing all the TCP actions to
ensure you will have a single connection
might be a bit overkill in terms of
performance.<br>
<br>
May I ask if this is a problem for you?
Can you detail a bit why?<br>
<br>
Best regards,<br>
</tt>
<pre class="gmail-m_-6484295390426693814gmail-m_-6377956126017792630moz-signature" cols="72">Răzvan Crainea
OpenSIPS Solutions
<a class="gmail-m_-6484295390426693814gmail-m_-6377956126017792630moz-txt-link-abbreviated" href="http://www.opensips-solutions.com" target="_blank" moz-do-not-send="true">www.opensips-solutions.com</a></pre>
<div
class="gmail-m_-6484295390426693814gmail-m_-6377956126017792630moz-cite-prefix">On
05/04/2017 04:11 PM, Ravitez Ravi wrote:<br>
</div>
<blockquote type="cite">
<div dir="ltr">Hi All,
<div> Good Day,</div>
<div> I have been seeing opensips
creating mutiple(duplicate) TCP
connections to the same destination if
hit with heavy call load.</div>
<div><br>
</div>
<div><b>What do i mean?</b></div>
<div>opensips ip : 10.10.10.1</div>
<div>Destination : 10.10.10.2</div>
<div>Tcp Children : 32</div>
<div> </div>
<div> Ideally opensips will create
only one tcp connections and reuses
it,if there's a heavy call load i see
there are several tcp connections
which are created to the same
destination.</div>
<div> I believe here's the root cause
:</div>
<div> - When a child tries to find a
connection to the destination it
calls <span style="color:rgb(0,0,0)">_tcpconn_find</span>()
(assuming we are using ip and not id)
system checks tcpconn_aliases_hash for
the connection info.<br>
</div>
<div> this map is maintained by the
parent process and each child lock its
while reaing tcpconn_get().in order to
simulate the scenario lets assume <span
style="font-weight:bold;color:rgb(0,0,0)">a</span><span
style="font-weight:bold;color:rgb(0,0,0)">-></span><span
style="font-weight:bold;color:rgb(128,0,0)">parent</span><span
style="font-weight:bold;color:rgb(0,0,0)">-></span><font
style="font-weight:bold"
color="#800000">state is BAD </font><font
color="#000000">this method</font></div>
<div><font color="#000000"> will
return null and so the child tries
to create a new connections,assuming
there's a second child trying to
find the same connections and goes
through the same process</font></div>
<div><font color="#000000"><br>
</font></div>
<div><font color="#000000"> - Now each
child thinks there's no connection
to the destination and calls
tcpconn_connect() this will create a
socket to the destination and passes
over the fd to the </font></div>
<div><font color="#000000"> main
process to update the has map.</font></div>
<div><font color="#000000"><br>
</font></div>
<div><font color="#000000"> - Not sure
if tcp_connect() should have locking
mechanism as in tcpconn_get().</font></div>
<div><font color="#000000"><br>
</font></div>
<div><font color="#000000"><br>
</font></div>
<div><font color="#000000"><br>
</font></div>
<div><font color="#000000">Please
correct me if my understanding is
wrong,please share your thoughts.</font></div>
<div><font color="#000000">Thank you.</font></div>
<div><font color="#000000"><br>
</font></div>
<div><font color="#000000"><br>
</font></div>
<div><font color="#000000"><br>
</font></div>
<div><font color="#000000">Regards,</font></div>
<div><font color="#000000">Ravitez.D</font></div>
</div>
<br>
<fieldset
class="gmail-m_-6484295390426693814gmail-m_-6377956126017792630mimeAttachmentHeader"></fieldset>
<br>
<pre>______________________________<wbr>_________________
Users mailing list
<a class="gmail-m_-6484295390426693814gmail-m_-6377956126017792630moz-txt-link-abbreviated" href="mailto:Users@lists.opensips.org" target="_blank" moz-do-not-send="true">Users@lists.opensips.org</a>
<a class="gmail-m_-6484295390426693814gmail-m_-6377956126017792630moz-txt-link-freetext" href="http://lists.opensips.org/cgi-bin/mailman/listinfo/users" target="_blank" moz-do-not-send="true">http://lists.opensips.org/cgi-<wbr>bin/mailman/listinfo/users</a>
</pre>
</blockquote>
<br>
</div>
<br>
______________________________<wbr>_________________<br>
Users mailing list<br>
<a href="mailto:Users@lists.opensips.org"
target="_blank" moz-do-not-send="true">Users@lists.opensips.org</a><br>
<a
href="http://lists.opensips.org/cgi-bin/mailman/listinfo/users"
rel="noreferrer" target="_blank"
moz-do-not-send="true">http://lists.opensips.org/cgi-<wbr>bin/mailman/listinfo/users</a><br>
<br>
</blockquote>
</div>
<br>
</div>
</div>
</div>
</blockquote>
</div>
<br>
</div>
</div>
</div>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<br>
<pre wrap="">_______________________________________________
Users mailing list
<a class="moz-txt-link-abbreviated" href="mailto:Users@lists.opensips.org">Users@lists.opensips.org</a>
<a class="moz-txt-link-freetext" href="http://lists.opensips.org/cgi-bin/mailman/listinfo/users">http://lists.opensips.org/cgi-bin/mailman/listinfo/users</a>
</pre>
</blockquote>
<br>
</body>
</html>