[OpenSIPS-Users] REG::Opensips V1.11.5 & V1.11.10 Duplicate TCP Conections

Ravitez Ravi ravitez.dondeti at gmail.com
Thu May 11 18:55:40 EDT 2017


Hello Razvan,
                    Good Day,
                    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

eg :
tcp_max_connections=10;
tcp_connection_lifetime=43200;
tcp_children=32

                  Considering the above configuration with the existing
framework we can use up all 10 connections and then reject new connections.
                  Please advise.Thank you :)


Regard,
Ravitez.D


On Tue, May 9, 2017 at 10:20 AM, Ravitez Ravi <ravitez.dondeti at gmail.com>
wrote:

> Hello Razvan,
>                    God Day,
>                    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.
>                    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
>                    latest/recent fd.
>
>  I believe here's the root cause :
>     - 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 *tcpconn_aliases_hash
> *for the connection info.
>      * 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->parent->state is BAD this method*
> *      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*
>
>   - *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 *
> *    main process to update the has map.*
>
>   - *Not sure if tcp_connect() should have locking mechanism as in
> tcpconn_get().*
>
>            Thank you :)
>
> Regards,
> Ravitez.D
>
> On Mon, May 8, 2017 at 10:48 AM, Răzvan Crainea <razvan at opensips.org>
> wrote:
>
>> Hi, Ravitez!
>>
>> 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.
>> Synchronizing all the TCP actions to ensure you will have a single
>> connection might be a bit overkill in terms of performance.
>>
>> May I ask if this is a problem for you? Can you detail a bit why?
>>
>> Best regards,
>>
>> Răzvan Crainea
>> OpenSIPS Solutionswww.opensips-solutions.com
>>
>> On 05/04/2017 04:11 PM, Ravitez Ravi wrote:
>>
>> Hi All,
>>         Good Day,
>>         I have been seeing opensips creating mutiple(duplicate) TCP
>> connections to the same destination if hit with heavy call load.
>>
>> *What do i mean?*
>> opensips ip : 10.10.10.1
>> Destination  : 10.10.10.2
>> Tcp Children : 32
>>
>>     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.
>>     I believe here's the root cause :
>>     - 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
>> tcpconn_aliases_hash for the connection info.
>>       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->parent->state is BAD this method
>>       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
>>
>>   - 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
>>     main process to update the has map.
>>
>>   - Not sure if tcp_connect() should have locking mechanism as in
>> tcpconn_get().
>>
>>
>>
>> Please correct me if my understanding is wrong,please share your thoughts.
>> Thank you.
>>
>>
>>
>> Regards,
>> Ravitez.D
>>
>>
>> _______________________________________________
>> Users mailing listUsers at lists.opensips.orghttp://lists.opensips.org/cgi-bin/mailman/listinfo/users
>>
>>
>>
>> _______________________________________________
>> Users mailing list
>> Users at lists.opensips.org
>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.opensips.org/pipermail/users/attachments/20170511/d71e3eee/attachment-0001.html>


More information about the Users mailing list