糖尿病康复,内容丰富有趣,生活中的好帮手!
糖尿病康复 > Memcache 提高缓存命中率

Memcache 提高缓存命中率

时间:2019-10-14 01:53:00

相关推荐

Memcache 提高缓存命中率

最近手上某个项目跟新代码,新的代码里大量采用memcahce作为缓存。所以开始深入了解memcache的内存分配策略。以前就听说有个PHP写的memcache监控脚本,在网上搜索了一下,果断下载下来用 memcache.php。

修改一下php文件代码配置

效果图如下

问题出现了

发现命中率 以每天0.5%的速度下降 从原来的97%下降到了94%。

Misses 的个数增长飞快。

从监控的Variables看出,几乎所有的items都集中在slab2里,有将近8737个Item。

那么问题肯定出现在slab2所缓存的数据上面。

开始查找问题~

从网上下载了一个memcached统计工具memcache-tool

在linux下运行 memcached-tool 127.0.0.1:11211

看来slab 2 类的 page 数据储存已满 ,但page的个数并没有增加,count已达到8738.

memcache守护进程为

memcached -d -m 10 -u root -p 11211

分配的内存只有10M , Chunk的Size 的倍数因子 -f 为默认的1.25

10M的内存分给了过多的 slab,导致每个slab的pages 最多只能有1个,无法增加pages。

slab2的 count 已经达到了所能容纳的最高值8738。不断的有缓存数据被Evicted。

解决问题

新开一个memcache守护进程

memcached -d -m 10 -f 2 -u root -p 11212

在项目代码中将所有使用memcache 11211 slab2 的缓存数据 接口地址改为 11212

pages数增加为2,count达到了8001,并没有full,一个page的最大chunk为5461,每个chunk的大小为192B

缓存项并没有被Evicted。

ok,问题解决了

/41.html?replytocom=2

如果觉得《Memcache 提高缓存命中率》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。