我们使用相当大(20GB),非常活跃(> 92%命中率)的Memcache群集,并且看到超过10%的浪费空间。
驱逐率极低(0.1 /秒),回收率持平--0。
这是值得关注的问题,是否有任何可以做的事情 - 甚至是定期的 - 以确保不会占用现有的可用空间?
答案 0 :(得分:2)
我最近对memcached群集的空间使用情况进行了分析,大约是这个大小的两倍。
我们发现memcached通常具有“浪费”的空间,因为它在各种尺寸的板坯中都是空的夹头,而这些板块根本没有填充。
这似乎是memcached<中的slab分配这一事实的副作用。 1.4.11是静态的,某个板坯尺寸的内存仅从相同尺寸的板坯中逐出(一旦分配)。
http://code.google.com/p/memcached/wiki/ReleaseNotes1411
从1.4.11开始,引入了一个slab重新分配的功能,这个功能被认为是允许LRU从其他slab类中驱逐对象以在需要的slab类上使用。
如果驱逐率不断被驱逐并重新分配到不同的平板类别中,我不确定将会发生什么。
鉴于驱逐率较低,除非您遇到性能问题,否则我不会过分关注。
希望这有帮助。