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 <mico...@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.fer...@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-us...@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@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@lists.sip-router.org http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users