[Serusers] SER Reports "out of memory"

Greger V. Teigre greger at teigre.com
Mon May 30 21:56:09 CEST 2005


Jan Janak wrote:
> On 30-05-2005 14:11, Greger V. Teigre wrote:
>> For the sake of the readers, here is how I understand SER's
>> operations today:
>> 1. Usrloc is always written to cache, DB write is controlled through
>> write-through parameter
>> 2. Replication is handled by t_replicate
>> 3. Management of cache is not needed, the cache is always updated.
>> However, an updated DB (and thus dirty cache) will not be detected
>
>  I am working on that already. The entries in the usrloc cache will
>  have an additional expires value and if that value expires then the
>  usrloc code will refresh it from the database. Also there will be no
>  full cache anymore -- usrloc will cache only a portion of the whole
>  location database and old entries will be using LRU scheme.

Excellent news!

>  The cache will be empty upon startup. When SER calls lookup then
>  usrloc will search the cache -- if there is no entry or if it is
>  expired then it will load it from the database and store in the cache
>  for limited period of time. If there is no entry in the database then
>  it will create a negative cache entry (to limit the amount of
>  unsuccessful database queries).
>
>  Database updates will not assume anything about the state of the
>  database so it should not matter if the entry still exists / does not
>  exists / has been modified..

I assume another ser server receiving an update must both write to DB and do 
a t_replicate to other ser servers who then do save_memory() as Paul 
responded in his last email to Karl?

>  There is one drawback though -- nathelper as it is implemented right
>  now will not work anymore -- we would need to rewrite it to use the
>  contents of the database.

Are you referring to the ping feature only or are there other things as 
well? Reading all NATed devices from DB every 30 seconds?

>> I must admit I often fall for the argument: "let each system do what
>> it is best at."
>> Following that, replication should only be done at an application
>> level if the underlying database is not capable of doing it (if we
>> agree that a DB is good at replication).  The only thing I see a DB
>> is not capable of, is handling the NAT issues. So, if a given usrloc
>> has to be represented by different location (ex. the registration
>> server), then the DB cannot do replication. However, if the NAT
>> issue is handled through some other means, ex. Call-Id aware LVS
>> with one public IP, then the usrloc should be the same across DBs
>> and the DB should handle the replication.
>
>  Another approach would be to let the user agent handle NATs. Sipura
>  phones, for example, can register with two proxy servers.

Yes, good point. But I'm not aware of many other user agents with such 
support yet?!

g-)




More information about the sr-users mailing list