Hi Carsten,<div><br></div><div>Thanks again for your kind reply.</div><div>I am quite newbie to kamailio, and I dont see why the load balancer is replying "500".</div><div><br></div><div>It will be great appreciated if you can point out what i am doing wrong in my config file as below.</div>
<div>Actually, there is another issue for the setting below is that it cannot load balancing the "REGISTER" correctly.</div><div><br></div><div>best regards,</div><div><br></div><div>chanea</div><div><br></div><div>
==============================================================</div><div><div><br></div><div>####### Global Parameters #########</div><div>#!define WITH_NAT</div><div><br></div><div><br></div><div><br></div><div># - flags</div>
<div># FLT_ - per transaction (message) flags</div><div>#<span class="Apple-tab-span" style="white-space:pre">        </span>FLB_ - per branch flags</div><div>#!define FLT_ACC 1</div><div>#!define FLT_ACCMISSED 2</div><div>#!define FLT_ACCFAILED 3</div>
<div>#!define FLT_NATS 5</div><div><br></div><div>#!define FLB_NATB 6</div><div>#!define FLB_NATSIPPING 7</div><div><br></div><div>####### Global Parameters #########</div><div><br></div><div>debug=-3</div><div>log_stderror=no</div>
<div><br></div><div>memdbg=5</div><div>memlog=5</div><div><br></div><div>log_facility=LOG_LOCAL0</div><div><br></div><div>fork=yes</div><div>children=8</div><div><br></div><div>disable_tcp=yes</div><div><br></div><div>auto_aliases=no</div>
<div><br></div><div>port=5060</div><div><br></div><div><br></div><div>sip_warning=no</div><div><br></div><div>####### Modules Section ########</div><div><br></div><div># set paths to location of modules</div><div>#!ifdef LOCAL_TEST_RUN</div>
<div>mpath="modules_k:modules"</div><div>#!else</div><div>mpath="/usr/local/lib64/kamailio/modules_k/:/usr/local/lib64/kamailio/modules/"</div><div>#!endif</div><div>loadmodule "db_mysql.so"</div>
<div>loadmodule "mi_fifo.so"</div><div>loadmodule "kex.so"</div><div>loadmodule "tm.so"</div><div>loadmodule "tmx.so"</div><div>loadmodule "sl.so"</div><div>loadmodule "rr.so"</div>
<div>loadmodule "usrloc.so"</div><div>loadmodule "pv.so"</div><div>loadmodule "maxfwd.so"</div><div>loadmodule "textops.so"</div><div>loadmodule "siputils.so"</div><div>loadmodule "xlog.so"</div>
<div>loadmodule "sanity.so"</div><div>loadmodule "ctl.so"</div><div>loadmodule "mi_rpc.so"</div><div>loadmodule "acc.so"</div><div>loadmodule "dispatcher.so"</div><div><br>
</div><div>#!ifdef WITH_NAT</div><div>loadmodule "nathelper.so"</div><div>loadmodule "rtpproxy.so"</div><div>#!endif</div><div><br></div><div><br></div><div># ----- mi_fifo params -----</div><div>modparam("mi_fifo", "fifo_name", "/tmp/kamailio_fifo")</div>
<div><br></div><div><br></div><div># ----- rr params -----</div><div># add value to ;lr param to cope with most of the UAs</div><div>modparam("rr", "enable_full_lr", 1)</div><div># do not append from tag to the RR (no need for this script)</div>
<div>modparam("rr", "append_fromtag", 0)</div><div><br></div><div><br></div><div># ----- acc params -----</div><div>modparam("acc", "log_flag", 1)</div><div>modparam("acc", "failed_transaction_flag", 3)</div>
<div>modparam("acc", "log_extra", </div><div><span class="Apple-tab-span" style="white-space:pre">        </span>"src_user=$fU;src_domain=$fd;dst_ouser=$tU;dst_user=$rU;dst_domain=$rd;src_ip=$si")</div>
<div><br></div><div># ----- tm params -----</div><div>modparam("tm", "fr_timer", 10000)</div><div>modparam("tm", "fr_inv_timer", 40000)</div><div><br></div><div><br></div><div>#!ifdef WITH_NAT</div>
<div># ----- rtpproxy params -----</div><div>#modparam("rtpproxy", "rtpproxy_sock", "udp:<a href="http://127.0.0.1:7722">127.0.0.1:7722</a>")</div><div>modparam("rtpproxy", "rtpproxy_sock", "udp:{myipaddr}:22222")</div>
<div># ----- nathelper params -----</div><div>modparam("nathelper", "natping_interval", 600)</div><div>modparam("nathelper", "ping_nated_only", 1)</div><div>modparam("nathelper", "sipping_bflag", FLB_NATSIPPING)</div>
<div>modparam("nathelper", "sipping_from", "sip:pinger@{myipaddr}")</div><div><br></div><div># params needed for NAT traversal in other modules</div><div>modparam("nathelper|registrar", "received_avp", "$avp(RECEIVED)")</div>
<div>modparam("usrloc", "nat_bflag", FLB_NATB)</div><div>#!endif</div><div><br></div><div><br></div><div># ----- dispatcher params -----</div><div>modparam("dispatcher", "db_url",</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>"mysql://{mydbsetting}")</div><div>modparam("dispatcher", "table_name", "dispatcher")</div><div>modparam("dispatcher", "flags", 2)</div>
<div>modparam("dispatcher", "dst_avp", "$avp(AVP_DST)")</div><div>modparam("dispatcher", "grp_avp", "$avp(AVP_GRP)")</div><div>modparam("dispatcher", "cnt_avp", "$avp(AVP_CNT)")</div>
<div><br></div><div>####### Routing Logic ########</div><div><br></div><div><br></div><div># main request routing logic</div><div><br></div><div>route {</div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre">        </span># per request initial checks</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>route(REQINIT);</div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre">        </span># NAT detection</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>route(NAT);</div>
<div><br></div><div><span class="Apple-tab-span" style="white-space:pre">        </span># handle requests within SIP dialogs</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>route(WITHINDLG);</div><div><br>
</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>### only initial requests (no To tag)</div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre">        </span># CANCEL processing</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>if (is_method("CANCEL"))</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>{</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>if (t_check_trans())</div>
<div><span class="Apple-tab-span" style="white-space:pre">                        </span>t_relay();</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>exit;</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>}</div>
<div><br></div><div><span class="Apple-tab-span" style="white-space:pre">        </span>t_check_trans();</div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre">        </span># record routing for dialog forming requests (in case they are routed)</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span># - remove preloaded route headers</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>remove_hf("Route");</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>if (is_method("INVITE|SUBSCRIBE"))</div>
<div><span class="Apple-tab-span" style="white-space:pre">                </span>record_route();</div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre">        </span># account only INVITEs</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>if (is_method("INVITE"))</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>{</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>setflag(1); # do accounting</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>}</div>
<div><br></div><div><span class="Apple-tab-span" style="white-space:pre">        </span># dispatch destinations</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>route(DISPATCH);</div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre">        </span>route(RELAY);</div>
<div>}</div><div><br></div><div><br></div><div>route[RELAY] {</div><div>#!ifdef WITH_NAT</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>if (check_route_param("nat=yes")) {</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>setbflag(FLB_NATB);</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>}</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>if (isflagset(FLT_NATS) || isbflagset(FLB_NATB)) {</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>route(RTPPROXY);</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>}</div><div>#!endif</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>if (!t_relay()) {</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>sl_reply_error();</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>}</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>exit;</div><div>}</div><div><br></div><div><br></div><div># Per SIP request initial checks</div>
<div>route[REQINIT] {</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>if (!mf_process_maxfwd_header("10")) {</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>sl_send_reply("483","Too Many Hops");</div>
<div><span class="Apple-tab-span" style="white-space:pre">                </span>exit;</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>}</div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre">        </span>if(!sanity_check("1511", "7"))</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>{</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>xlog("Malformed SIP message from $si:$sp\n");</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>exit;</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>}</div><div>}</div><div><br></div><div># Caller NAT detection route</div><div>route[NAT] {</div><div>#!ifdef WITH_NAT</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>force_rport();</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>if (nat_uac_test("19")) {</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>#xlog("L_INFO","ALERT: ua is behind NAT (ru:$ru)(IP:$si:$sp)\n");</div>
<div><br></div><div><span class="Apple-tab-span" style="white-space:pre">                </span>if (method=="REGISTER") {</div><div><span class="Apple-tab-span" style="white-space:pre">                        </span>fix_nated_register();</div><div>
<span class="Apple-tab-span" style="white-space:pre">                </span>} else {</div><div><span class="Apple-tab-span" style="white-space:pre">                        </span>fix_nated_contact();</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>}</div>
<div><span class="Apple-tab-span" style="white-space:pre">                </span>setflag(FLT_NATS);</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>}</div><div>#!endif</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>return;</div>
<div>}</div><div><br></div><div># RTPProxy control</div><div>route[RTPPROXY] {</div><div>#!ifdef WITH_NAT</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>if (is_method("BYE")) {</div><div>
<span class="Apple-tab-span" style="white-space:pre">                </span>unforce_rtp_proxy();</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>} else if (is_method("INVITE")){</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>force_rtp_proxy();</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>}</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>if (!has_totag()) add_rr_param(";nat=yes");</div><div>#!endif</div><div>
<span class="Apple-tab-span" style="white-space:pre">        </span>return;</div><div>}</div><div><br></div><div><br></div><div><br></div><div># Handle requests within SIP dialogs</div><div>route[WITHINDLG] {</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>if (has_totag()) {</div>
<div><span class="Apple-tab-span" style="white-space:pre">                </span># sequential request withing a dialog should</div><div><span class="Apple-tab-span" style="white-space:pre">                </span># take the path determined by record-routing</div>
<div><span class="Apple-tab-span" style="white-space:pre">                </span>if (loose_route()) {</div><div><span class="Apple-tab-span" style="white-space:pre">                        </span>if (is_method("BYE")) {</div><div><span class="Apple-tab-span" style="white-space:pre">                                </span>setflag(1); # do accounting ...</div>
<div><span class="Apple-tab-span" style="white-space:pre">                                </span>setflag(3); # ... even if the transaction fails</div><div><span class="Apple-tab-span" style="white-space:pre">                        </span>}</div><div><span class="Apple-tab-span" style="white-space:pre">                        </span>route(RELAY);</div>
<div><span class="Apple-tab-span" style="white-space:pre">                </span>} else {</div><div><span class="Apple-tab-span" style="white-space:pre">                        </span>if ( is_method("ACK") ) {</div><div><span class="Apple-tab-span" style="white-space:pre">                                </span>if ( t_check_trans() ) {</div>
<div><span class="Apple-tab-span" style="white-space:pre">                                        </span># non loose-route, but stateful ACK;</div><div><span class="Apple-tab-span" style="white-space:pre">                                        </span># must be ACK after a 487 or e.g. 404 from upstream server</div>
<div><span class="Apple-tab-span" style="white-space:pre">                                        </span>t_relay();</div><div><span class="Apple-tab-span" style="white-space:pre">                                        </span>exit;</div><div><span class="Apple-tab-span" style="white-space:pre">                                </span>} else {</div>
<div><span class="Apple-tab-span" style="white-space:pre">                                        </span># ACK without matching transaction ... ignore and discard.</div><div><span class="Apple-tab-span" style="white-space:pre">                                        </span>exit;</div><div><span class="Apple-tab-span" style="white-space:pre">                                </span>}</div>
<div><span class="Apple-tab-span" style="white-space:pre">                        </span>}</div><div><span class="Apple-tab-span" style="white-space:pre">                        </span>sl_send_reply("404","Not here");</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>}</div>
<div><span class="Apple-tab-span" style="white-space:pre">                </span>exit;</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>}</div><div>}</div><div><br></div><div># Dispatch requests</div><div>route[DISPATCH] {</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span># round robin dispatching on gateways group '1'</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>if(!ds_select_dst("1", "0"))</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>{</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>send_reply("404", "No destination");</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>exit;</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>}</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>xlog("L_INFO", "--- SCRIPT: going to <$ru> via <$du>\n");</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>t_on_failure("RTF_DISPATCH");</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>return;</div><div><span class="Apple-tab-span" style="white-space:pre">        </span></div>
<div>}</div><div><br></div><div># Sample failure route</div><div>failure_route[RTF_DISPATCH] {</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>if (t_is_canceled()) {</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>exit;</div>
<div><span class="Apple-tab-span" style="white-space:pre">        </span>}</div><div><span class="Apple-tab-span" style="white-space:pre">        </span># next DST - only for 500 or local timeout</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>if (t_check_status("500")</div>
<div><span class="Apple-tab-span" style="white-space:pre">                        </span>or (t_branch_timeout() and !t_branch_replied()))</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>{</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>if(ds_next_dst())</div>
<div><span class="Apple-tab-span" style="white-space:pre">                </span>{</div><div><span class="Apple-tab-span" style="white-space:pre">                        </span>t_on_failure("RTF_DISPATCH");</div><div><span class="Apple-tab-span" style="white-space:pre">                        </span>route(RELAY);</div>
<div><span class="Apple-tab-span" style="white-space:pre">                        </span>exit;</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>}</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>}</div>
<div>}</div></div><div>=================================================================</div><div><br></div><div><br><br><div class="gmail_quote">On Tue, Feb 26, 2013 at 8:32 PM, Carsten Bock <span dir="ltr"><<a href="mailto:carsten@ng-voice.com" target="_blank">carsten@ng-voice.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi,<br>
<br>
the dispatcher module doesn't create "500 Internal Server Error" replies.<br>
There must be another source for your error; most likely not the<br>
Kamailio Loadbalancer.<br>
<div class="HOEnZb"><div class="h5"><br>
Kind regards,<br>
Carsten<br>
<br>
2013/2/26 chanea <<a href="mailto:chanea@gmail.com">chanea@gmail.com</a>>:<br>
> Hi Carsten,<br>
><br>
> Thanks for your quick reply.<br>
> The "500" is generated by the Kamailio server which is used as Load balancer<br>
> ( using dispatcher module).<br>
><br>
> I dont see any 500 number in my kamailio.cfg in the load balancer kamailio.<br>
> Should I go deep into the dispatcher module itself?<br>
><br>
><br>
> Unluckily I cannot check the reason by checking the syslog since this only<br>
> happen when thousands of request come in at the same time.<br>
><br>
> chanea<br>
><br>
><br>
><br>
> On Tue, Feb 26, 2013 at 7:24 PM, Carsten Bock <<a href="mailto:carsten@ng-voice.com">carsten@ng-voice.com</a>> wrote:<br>
>><br>
>> Hi,<br>
>><br>
>> can you see, why the Kamailio is returning a "500 Server internal<br>
>> error"? This response must be either created by some module or by some<br>
>> upstream server (e.g. in case of loadbalancing).<br>
>> Kamailio itself would not create such response, you should (if at all)<br>
>> find the answer in the logs...<br>
>><br>
>> Kind regards,<br>
>> Carsten<br>
>><br>
>> 2013/2/26 chanea <<a href="mailto:chanea@gmail.com">chanea@gmail.com</a>>:<br>
>> > Dear all<br>
>> ><br>
>> > While lots of request come to my Kamailio 3.1.x in the same time ,<br>
>> > server<br>
>> > is returning "500, Server Internal Error" to some of the request.<br>
>> ><br>
>> > What should i do if i want to reduce the number of "500" response?<br>
>> ><br>
>> ><br>
>> ><br>
>> > chanea<br>
>> ><br>
>> > _______________________________________________<br>
>> > sr-dev mailing list<br>
>> > <a href="mailto:sr-dev@lists.sip-router.org">sr-dev@lists.sip-router.org</a><br>
>> > <a href="http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev" target="_blank">http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev</a><br>
>> ><br>
>><br>
>><br>
>><br>
>> --<br>
>> Carsten Bock<br>
>> CEO (Geschäftsführer)<br>
>><br>
>> =============================================================<br>
>> Visit us on the Kamailio World 2013, 16./17. April 2013<br>
>> => <a href="http://conference.kamailio.com/k01/" target="_blank">http://conference.kamailio.com/k01/</a> See<br>
>> you there!<br>
>> =============================================================<br>
>><br>
>> ng-voice GmbH<br>
>> Schomburgstr. 80<br>
>> D-22767 Hamburg / Germany<br>
>><br>
>> <a href="http://www.ng-voice.com" target="_blank">http://www.ng-voice.com</a><br>
>> mailto:<a href="mailto:carsten@ng-voice.com">carsten@ng-voice.com</a><br>
>><br>
>> Office <a href="tel:%2B49%2040%2034927219" value="+494034927219">+49 40 34927219</a><br>
>> Fax <a href="tel:%2B49%2040%2034927220" value="+494034927220">+49 40 34927220</a><br>
>><br>
>> Sitz der Gesellschaft: Hamburg<br>
>> Registergericht: Amtsgericht Hamburg, HRB 120189<br>
>> Geschäftsführer: Carsten Bock<br>
>> Ust-ID: DE279344284<br>
>><br>
>> Hier finden Sie unsere handelsrechtlichen Pflichtangaben:<br>
>> <a href="http://www.ng-voice.com/imprint/" target="_blank">http://www.ng-voice.com/imprint/</a><br>
>><br>
>> _______________________________________________<br>
>> sr-dev mailing list<br>
>> <a href="mailto:sr-dev@lists.sip-router.org">sr-dev@lists.sip-router.org</a><br>
>> <a href="http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev" target="_blank">http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev</a><br>
><br>
><br>
><br>
> _______________________________________________<br>
> sr-dev mailing list<br>
> <a href="mailto:sr-dev@lists.sip-router.org">sr-dev@lists.sip-router.org</a><br>
> <a href="http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev" target="_blank">http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev</a><br>
><br>
<br>
<br>
<br>
--<br>
Carsten Bock<br>
CEO (Geschäftsführer)<br>
<br>
=============================================================<br>
Visit us on the Kamailio World 2013, 16./17. April 2013<br>
=> <a href="http://conference.kamailio.com/k01/" target="_blank">http://conference.kamailio.com/k01/</a> See<br>
you there!<br>
=============================================================<br>
<br>
ng-voice GmbH<br>
Schomburgstr. 80<br>
D-22767 Hamburg / Germany<br>
<br>
<a href="http://www.ng-voice.com" target="_blank">http://www.ng-voice.com</a><br>
mailto:<a href="mailto:carsten@ng-voice.com">carsten@ng-voice.com</a><br>
<br>
Office <a href="tel:%2B49%2040%2034927219" value="+494034927219">+49 40 34927219</a><br>
Fax <a href="tel:%2B49%2040%2034927220" value="+494034927220">+49 40 34927220</a><br>
<br>
Sitz der Gesellschaft: Hamburg<br>
Registergericht: Amtsgericht Hamburg, HRB 120189<br>
Geschäftsführer: Carsten Bock<br>
Ust-ID: DE279344284<br>
<br>
Hier finden Sie unsere handelsrechtlichen Pflichtangaben:<br>
<a href="http://www.ng-voice.com/imprint/" target="_blank">http://www.ng-voice.com/imprint/</a><br>
<br>
_______________________________________________<br>
sr-dev mailing list<br>
<a href="mailto:sr-dev@lists.sip-router.org">sr-dev@lists.sip-router.org</a><br>
<a href="http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev" target="_blank">http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev</a><br>
</div></div></blockquote></div><br></div>