[Serusers] Questions about ser
Andrei Pelinescu-Onciul
andrei at iptel.org
Mon Jul 25 19:28:06 CEST 2005
On Jul 25, 2005 at 12:07, Michael Ulitskiy <mdu113 at acedsl.com> wrote:
> On Monday 25 July 2005 08:21 am, Jan Janak wrote:
> > > > No, you don't need hundreds of children, usualy 16 is maximu what you
> > > > need. Newer ser versions contain connection pool, so each child will
> > > > open exactly one database connection and it will be reused across
> > > > modules.
> > >
> > > What about processing that involves slow DNS queries? I thought this would
> > > eat up available workers quite quickly and further processing will be blocked?
> > > Please correct me if I'm wrong.
> >
> > You can install local (running on the same host as the proxy) DNS
> > cache that can also cache negative entries (those that do not exist or
> > cannot be looked up), such as dnsmasq. This way the slow query would
> > be performed once and subsequent queries will be answered from the
> > cache.
> > Moreover, kernel maintains a queue of incoming SIP requests and it
> > will continue receiving SIP messages even if all processes are
> > blocked. The kernel starts to drop incoming SIP messages once the
> > queue is full.
>
> Well, I guess it's not a solution. It's a workaround at best. I'd vote for something
> apache-like. I.e. master process monitoring the number of idle children and forking
> additional as needed. Thanks anyway.
Why not start them all from the beginning? Is not like they will eat a
lot of resources...
> Also could you (or someone) give me a rough estimation on what is the optimal
> number of children to serve let's say 10k sip clients as registrar and proxy with
> moderately complex config file, but not involving DNS queries? INVITEs may involve
> several database queries to a dedicated database server. I understand that the
> question is rather vague, I'm just interested in a rough estimation and some
> real-world numbers people use.
Try it and if you can see packets in the socket buffers (netstat)
increase the number of children.
I would use 20-50 children. The "lots of db connections" problem is
solved when using connection pools (or by increasing the maximum
connections in mysql's config :-)).
You could use also tune the dns timeout (limit the maximum time a dns
request can take). For this you would need either unstable (grep NEWS
for dns_) or to edit your /etc/resolv.conf and set the timeout and
attempts options and remove the search or domain lines.
Andrei
More information about the sr-users
mailing list