[SR-Users] Async module taking down our server
Will Ferrer
will.ferrer at switchsoft.com
Sat Jan 31 01:11:04 CET 2015
Hi Brandon
The feature fixed some issues one of our clients auto dialer were having.
I hope you have a great weekend.
All the best.
Will
On Thu, Jan 29, 2015 at 5:06 AM, Brandon Armstead <brandon at cryy.com> wrote:
> Why not just kill the call and have billing fix up for minimum duration
> occur during CDR creation? Does not make sense to delay Hangup just to
> meet minimum duration.
>
> Sent from my iPhone
>
> On Jan 28, 2015, at 5:37 PM, Will Ferrer <will.ferrer at switchsoft.com>
> wrote:
>
> Hi Daniel
>
> Yeah I am happy to be able to report the success. Thanks for everything as
> always!
>
> I hope you are well.
>
> Will
>
> On Wed, Jan 28, 2015 at 5:54 AM, Daniel-Constantin Mierla <
> miconda at gmail.com> wrote:
>
>> Hello,
>>
>> great that it was sorted out and it was not on Kamailio side :-)
>>
>> Also, glad to hear that async processing did increase capacity to handle
>> more concurrent calls, even it was causing troubles to other applications
>> ...
>>
>> Cheers,
>> Daniel
>>
>>
>> On 28/01/15 05:40, Will Ferrer wrote:
>>
>> Hello
>>
>> I wanted to give an update on this.
>>
>> My business partner that found the issue and has been monitoring the
>> problem has tracked down the issue. It turns out that the features we
>> implemented using the async module were leading to more calls going on con
>> currently (as they were intended to) and this was causing and issue with
>> voip monitor. So the issue was not with the Async module.
>>
>> All the best.
>>
>> Will Ferrer
>>
>> Switchsoft
>>
>> On Mon, Jan 19, 2015 at 8:43 PM, Will Ferrer <will.ferrer at switchsoft.com>
>> wrote:
>>
>>> Hi All
>>>
>>> We are trying to use the async module to to delay sending a bye on from
>>> one end of the call to the other.
>>>
>>> We are using async_route(routename, seconds) to delay
>>> the WITHINDLG route. The idea is that in the future we want to be able to
>>> have our billing min duration enforced (though currently we are having
>>> issues with the dialog module that we are discussing in another thread).
>>>
>>> After running this on our deploy servers, the delays before sending on
>>> the byes get longer and longer, and then kamailio goes down. Then the
>>> receive udp buffer fills up.
>>>
>>> We tried it with both 4 and 400 async workers, and it made no difference.
>>>
>>> I am including a screen capture of the servers stats when this happens
>>> taken from voip monitor.
>>>
>>> Here are the relevant parts of the config:
>>>
>>> ...
>>> loadmodule "async.so"
>>> ...
>>> modparam("async", "workers", ASYNC_THREADS)
>>> ...
>>> request_route {
>>> ...
>>> route(DELAYED_BYE_STATIC);
>>> ...
>>> route[DELAYED_BYE_STATIC] {
>>> xlog("L_DEBUG","route DELAYED_BYE_STATIC");
>>> #!ifdef WITH_DELAYED_BYE_STATIC
>>> if (is_method("BYE")) {
>>> xlog("L_DEBUG","route DELAYED_BYE_STATIC, from self \n");
>>> #if (from_uri == myself) {
>>> if ((allow_trusted() || allow_source_address()) && from_uri == myself)
>>> {
>>> xlog("L_DEBUG","route DELAYED_BYE_STATIC, Bye detected, from self \n");
>>> send_reply("200", "OK");
>>> xlog("L_DEBUG","route DELAYED_BYE_STATIC, sent 200 about to sleep \n");
>>> setflag(FLT_ACC); # do accounting ...
>>> setflag(FLT_ACCFAILED); # ... even if the transaction fails
>>> if (has_totag()) {
>>> xlog("L_DEBUG","route DELAYED_BYE_STATIC, sleeping to
>>> WITHINDLG_DELAYED \n");
>>> async_route("WITHINDLG_DELAYED", MIN_DURATION);
>>> } else {
>>> xlog("L_DEBUG","route DELAYED_BYE_STATIC, sleeping to WITHINDLG \n");
>>> async_route("WITHINDLG", MIN_DURATION);
>>> }
>>> xlog("L_DEBUG","route DELAYED_BYE_STATIC, slept\n");
>>> exit;
>>> }
>>> }
>>> #!endif
>>> return;
>>> }
>>> ...
>>> route[WITHINDLG_DELAYED] {
>>> xlog("L_DEBUG", "route WITHINDLG_DELAYED: triggered \n");
>>> $avp(was_delayed) = 1;
>>> route(WITHINDLG);
>>> }
>>> ...
>>> route[WITHINDLG] {
>>> xlog("L_DEBUG", "route WITHINDLG: will -- DLG triggered, request
>>> method: $rm \n");
>>> #!ifdef WITH_DISPATCHER
>>> if(is_method("BYE|CANCEL")) {
>>> xlog("L_DEBUG","route WITHINDLG: cancel or bye detected, request
>>> method: $rm \n");
>>> #!ifdef WITH_DISPATCHER_LOAD_AWARE
>>> xlog("L_DEBUG","route WITHINDLG: running ds_load_update, request
>>> method: $rm \n");
>>> ds_load_update();
>>> #dlg_get ("$ci","$ft","$tt");
>>> #dlg_bye ("all");
>>> #!endif
>>> }
>>> #!endif
>>>
>>> if (has_totag() || $avp(was_delayed) == 1) {
>>> xlog("L_DEBUG", "route WITHINDLG: will -- DLG has totag or
>>> was_delayed: $avp(was_delayed) \n");
>>> # sequential request withing a dialog should
>>> # take the path determined by record-routing
>>> if (loose_route()) {
>>> xlog("L_DEBUG", "route WITHINDLG: will -- DLG has loose route \n");
>>> route(DLGURI);
>>> if (is_method("BYE")) {
>>> xlog("L_DEBUG","route WITHINDLG: BYE detected");
>>> setflag(FLT_ACC); # do accounting ...
>>> setflag(FLT_ACCFAILED); # ... even if the transaction fails
>>> xlog("L_DEBUG","route WITHINDLG: ACC flag set");
>>> }
>>> else if ( is_method("ACK") ) {
>>> # ACK is forwarded statelessy
>>> route(NATMANAGE);
>>> }
>>> else if ( is_method("NOTIFY") ) {
>>> # Add Record-Route for in-dialog NOTIFY as per RFC 6665.
>>> record_route();
>>> }
>>> xlog("L_DEBUG", "route WITHINDLG: will -- DLG RELAY 1\n");
>>> route(RELAY);
>>> } else {
>>> xlog("L_DEBUG", "route WITHINDLG: will -- DLG else \n");
>>> if (is_method("SUBSCRIBE") && uri == myself) {
>>> # in-dialog subscribe requests
>>> route(PRESENCE);
>>> exit;
>>> }
>>> if ( is_method("ACK") ) {
>>> xlog("L_DEBUG", "route WITHINDLG: will -- DLG is ack \n");
>>> if ( t_check_trans() ) {
>>> xlog("L_DEBUG", "route WITHINDLG: will -- DLG t_check_trans \n");
>>> # no loose-route, but stateful ACK;
>>> # must be an ACK after a 487
>>> # or e.g. 404 from upstream server
>>> xlog("L_DEBUG", "route WITHINDLG: will -- DLG RELAY 2\n");
>>> route(RELAY);
>>> exit;
>>> } else {
>>> # ACK without matching transaction ... ignore and discard
>>> exit;
>>> }
>>> }
>>> sl_send_reply("404","Not here");
>>> }
>>> exit;
>>> }
>>> }
>>> ...
>>>
>>>
>>>
>>> Does any one know if this is a bug or a leak with in the async module,
>>> or perhaps something I am doing in my config?
>>>
>>> Thanks in advance for an assistance you can offer me.
>>>
>>> All the best.
>>>
>>> Will Ferrer
>>> Switchsoft
>>>
>>>
>>>
>>
>>
>> _______________________________________________
>> SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing listsr-users at lists.sip-router.orghttp://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
>>
>>
>> --
>> Daniel-Constantin Mierlahttp://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda
>>
>>
>> _______________________________________________
>> SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
>> sr-users at lists.sip-router.org
>> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
>>
>>
> _______________________________________________
> SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
> sr-users at lists.sip-router.org
> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
>
>
> _______________________________________________
> SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
> sr-users at lists.sip-router.org
> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.sip-router.org/pipermail/sr-users/attachments/20150130/5f1754d8/attachment.html>
More information about the sr-users
mailing list