Error handling in Cache::Memcached
George Schlossnagle
george at omniti.com
Wed Jul 12 20:33:11 UTC 2006
dormando wrote:
>
>> The problem with this is that since I still don't know why my get()
>> failed, I would need to call this method unconditionally before every
>> operation. That's very expensive. Optionally die()'ing seems much more
>> perlish.
>>
>> George
>
> The application doesn't need to know why the get() failed. Check the
> mailing list archives. This has come up a number of times for two
> different reasons:
>
> 1) Clients used to, some still, detect when a server goes down, then
> redistributes keys.
>
> 2) Figured out that 1) was a bad idea, because the keys get
> redistributed again when the server comes back up, or constantly if it
> flaps. Tons of cache misses! Better to treat everything as a cache miss
> and have a monitoring service actually let you know if memcached is lost
> and gone forever, rather than cause tons of cache misses to redistribute.
I understand that using this information to base decisions about key
redistribution is probably unwise. Presumably this is why the
auto-rehashing is toggleable.
That said, the value in having application code know whether or not a
server is available is still important. If for no other reason than
your application is _the_ best place to detect intermittent errors in
the components it talks to.
> Also, hey George :P I was at CCI after you left.
Hi! :)
George
More information about the memcached
mailing list