Hi dormando, thanks for your reply.

Thanks for confirming that the issues we thought we were seeing should not have happened. It actually helped us to look for other possible causes... :-)

It turns out that one of the memcached processes in our web server cluster was running an old version. Whenever we tried to save a specific piece of data, it was redirected there, and we got the "out of memory" error. Now we've upgraded it as well, and everything seems to work just fine.

Thanks!

Håkan Waara
Travelocity Nordic

dormando wrote:
Hey,

Are you running memcached with the -M option? What version are you using? What clients?

The thing is, we don't have 100% control over the size of the data we typically cache. It may change over time. The problem then of course becomes that the slab classes are already populated, so things of other sizes won't find a slab class that matches their size, and thus cannot be cached at all.

This _should_ only happen when running in -M mode. What should otherwise happen are cache evictions. So if there isn't enough memory available in a slab class it would eject something else from the cache first.

One common suggestion seems to be to "warm up" the cache. Would it be a bad idea to warm up every slab class with a minimum of 1 item, just to make sure they're all "open"? I guess that is something we'd like to avoid.

Recent releases of memcached do this already, expressly to avoid that issue.

Another way is to manually adjust the slab sizes over time, using memcached-tool to move items around, or even restarting the daemons. This seems a bit tedious though.

It might not work very well. The slab reassignment stuff is aligned for a factor of 2.0, but the default slab class factor is now 1.2... I don't fully grok how that affects everything yet, but noticed while reading the code.

Is there any way to automatically adjust the slabs over time, as the data stored changes? What's the current practice for dealing with this problem, for other users of memcached?

Any advice appreciated - thanks!

No way as of yet, but you probably shouldn't be getting out of memory errors outright, so there's a chance something else is holding you back here.

-Dormando

Reply via email to