Hello,

On 7/10/13 7:13 AM, Allen Zhang wrote:

Hi list,

 

I have a loadbalancer before sipproxies. I call t_reley() on the dispatcher to forward requests to  destinations.

All goes well under low load.

But when load goes up to 500 requests/s, the loadbalancer still sends requests via only one tcp connection. This maxes out the tcp write queue.

Of course I can increase the ‘tcp_conn_wq_max’ value but it doesn’t solve the root problem.

How  do I make the loadbalancer start a new tcp connection to the destination when existing one becomes too busy? (Is it possible?)

there is no detection for such case and it will add some complexity to manage a group of connections to same destination (but patches will be considered, of course).

However, here are some workarounds:
- use set_forward_close(), but note its issues regarding replies:
http://www.kamailio.org/wiki/cookbooks/devel/core#set_forward_close

- listen on several local tcp sockets and use selectively one of them via forcing local socket for sending (see $fs variable or force_send_socket(...))

Cheers,
Daniel
-- 
Daniel-Constantin Mierla - http://www.asipto.com
http://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda