Andreas Granig wrote:
Greger V. Teigre wrote:
:-) Jan participated in a discussion on serusers
on a new cache
system where all locations where not loaded at start-up, but rather
at need.
Well, I just read the thread at
http://lists.iptel.org/pipermail/serusers/2005-May/019867.html and for
me as a guy who wants to run a scalabe system with a minimum of
afford and as soon as possible, one question comes up: is it really
worth the efford to implement such a caching system?
I see your point. However, SER has many different uses and many different
deployment scenarios. In some scenarios the focus is on high through-put of
20K users (who are divided across registrars), DNS SRV is used, and Linux HA
is used for failover. Relying on a database lookup for every single
lookup("location") will reduce performance quite a lot.
Don't understand me wrong, I'm sure there are
a lot of people who
benefit from this caching mechanism in terms of performance, but my
experience with this is, well, very bad, when using it in a bigger
environment.
Again, I think it depends on your setup. The setup mentioned above does not
use DB replication, but separate databases and a path type implementation
for routing between Registrars for incoming INVITEs.
For me (and I think a lot of other people, like Paul,
who mentioned it
too in the above thread) the performance won due to the cache lookup
is so minimal in combination with my 10-15 other mysql queries and
1-2 enum queries per call, that I really don't care, especially when
thinking about the advantages of a consistend location table in the
backend DB:
This I don't understand either. If you do user preferece lookup, it's for
the first INVITE, lookup("location") is done for far more messages than just
the first INVITE. And then you have nathelper's ping every 10-30 seconds...
No need to replicate on SIP level anymore (and
there's no really
usable mechanism for that for more than two SER nodes), no need to
distribute other contacts like aliases to every single SER node using
a remote fifo hack, the need of much less memory, much faster startup
time and so on, and that all for just a few more milliseconds of
latency.
So IMHO the option of disabling the cache absolutely makes sense *in
some circumstances*, like large scale systems.
Yes, I agree. It would be interesting to run a test on a such system to see
the actual performance impact.
g-)