Memcache 提高缓存命中率
最近手上某个项目跟新代码,新的代码里大量采用memcahce作为缓存。所以开始深入了解memcache的内存分配策略。以前就听说有个PHP写的memcache监控脚本,在网上搜索了一下,果断下载下来用 memcache.php。
修改一下php文件代码配置
1
2
3
4
|
define(‘ADMIN_USERNAME’,'admin’);
define(‘ADMIN_PASSWORD’,'admin’);
$MEMCACHE_SERVERS [] = ’127.0.0.1:11211′;
$MEMCACHE_SERVERS [] = ’127.0.0.1:11212′; //可以多个监控
|
效果图如下
问题出现了
发现命中率 以每天0.5%的速度下降 从原来的97%下降到了94%。
Misses 的个数增长飞快。
从监控的Variables看出,几乎所有的items都集中在slab2里,有将近8737个Item。
那么问题肯定出现在slab2所缓存的数据上面。
开始查找问题~
从网上下载了一个memcached统计工具memcache-tool
在linux下运行 memcached-tool 127.0.0.1:11211
1
2
|
# Item_Size Max_age Pages Count Full? Evicted
slabId chunk的大小 生命周期 page数量 缓存项个数 是否已满 被注销数?
|
看来slab 2 类的 page 数据储存已满 ,但page的个数并没有增加,count已达到8738.
memcache守护进程为
memcached -d -m 10 -u root -p 11211
分配的内存只有10M , Chunk的Size 的倍数因子 -f 为默认的1.25
1
2
3
4
5
6
7
8
9
10
|
[root@] # memcached -u root -vv
slab class 1: chunk size 96 perslab 10922
slab class 2: chunk size 120 perslab 8738
slab class 3: chunk size 152 perslab 6898
slab class 4: chunk size 192 perslab 5461
slab class 5: chunk size 240 perslab 4369
slab class 6: chunk size 304 perslab 3449
slab class 7: chunk size 384 perslab 2730
slab class 8: chunk size 480 perslab 2184
...
|
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
1
2
3
|
[root@ ~] # /home/duyumi/memcached-tool 127.0.0.1:11212
# Item_Size Max_age Pages Count Full? Evicted Evict_Time OOM
2 192B 5190s 2 8001 no 0 0 0
|
pages数增加为2,count达到了8001,并没有full,一个page的最大chunk为5461,每个chunk的大小为192B
1
2
3
4
5
|
[root@ ~] # memcached -u root -f 2 -vv
slab class 1: chunk size 96 perslab 10922
slab class 2: chunk size 192 perslab 5461
slab class 3: chunk size 384 perslab 2730
....
|
缓存项并没有被Evicted。
ok,问题解决了
http://www.duyumi.net/41.html?replytocom=2
转载于:https://www.cnblogs.com/lixiuran/p/4040392.html
Memcache 提高缓存命中率相关推荐
- 华为云CDN如何提高缓存命中率
背景信息 CDN缓存命中率低,会导致源站压力大,静态资源访问效率低.您可以针对导致CDN缓存命中率低的具体原因,选择对应的优化策略,来提高CDN的缓存命中率.CDN缓存命中率包括流量命中率和请求命中率 ...
- mysql 加快命中_合理配置MySQL缓存 提高缓存命中率
众所周知,系统读取数据时,从内存中读取要比从硬盘上速度要快好几百倍.故现在绝大部分应用系统,都会最大程度的使用缓存(内存中的一个存储区域),来提高系统的运行效率.MySQL数据库也不例外.在这里,笔者 ...
- 合理配置MySQL缓存 提高缓存命中率
众所周知,系统读取数据时,从内存中读取要比从硬盘上速度要快好几百倍.故现在绝大部分应用系统,都会最大程度的使用缓存(内存中的一个存储区域),来提高系统的运行效率.MySQL数据库也不例外.在这里,笔者 ...
- mysql query cache 命中率_MySQL缓存命中率概述及如何提高缓存命中率
MySQL缓存命中率概述 工作原理: 查询缓存的工作原理,基本上可以概括为: 缓存SELECT操作或预处理查询(注释:5.1.17开始支持)的结果集和SQL语句: 新的SELECT语句或预处理查询语句 ...
- mysql提高缓存_合理配置MySQL缓存 提高缓存命中率
众所周知,系统读取数据时,从内存中读取要比从硬盘上速度要快好几百倍.故现在绝大部分应用系统,都会最大程度的使用缓存(内存中的一个存储区 域),来提高系统的运行效率.MySQL数据库也不例外.在这里,笔 ...
- 如何提高缓存命中率(Redis)
缓存命中率的介绍 命中:可以直接通过缓存获取到需要的数据. 不命中:无法直接通过缓存获取到想要的数据,需要再次查询数据库或者执行其它的操作.原因可能是由于缓存中根本不存在,或者缓存已经过期. 通常来讲 ...
- 缓存命中率是什么,如何提高缓存命中率?
缓存命中率:通常来讲,缓存的命中率越高则表示使用缓存的收益越高,应用的性能越好(响应时间越短.吞吐量越高),抗并发的能力越强. 命中:可以直接通过缓存获取到需要的数据. 不命中:无法直接通过缓存获取到 ...
- PHP提高redis命中率,怎么提高redis缓存命中率
缓存命中率的介绍 命中:可以直接通过缓存获取到需要的数据. 不命中:无法直接通过缓存获取到想要的数据,需要再次查询数据库或者执行其它的操作.原因可能是由于缓存中根本不存在,或者缓存已经过期. 通常来讲 ...
- Redis缓存命中率如何提高
一.缓存命中率 命中:可以直接通过缓存获取到需要的数据,而不是从数据库中获取 不命中:无法直接通过缓存获取到想要的数据,需要再次查询数据库或者执行其它的操作.原因可能是由于缓存中根本不存在,或者缓存已 ...
- 深入探讨Varnish缓存命中率
也许你还在为刚才动态内容获得7336.76 reqs/s的吞吐率感到振奋,等等,理想和现实是有差距的,你要忍受现实的残酷,别忘了,我们压力测试中的动态内容都处于全缓存情况下,也就是每次请求都命中缓存, ...
最新文章
- 未在本地计算机上注册oraoledb.oracle.1提供程序,未在本地计算机上注册“OraOLEDB.Oracle.1”提供程序--问题的处理...
- R3模擬器版本預覽一下。。暫時沒帶QQ....
- 白话异常检测算法Isolation Forest
- 转移的目的地址在指令中的jmp指令 转移地址在寄存器中的jmp指令
- html字体阴影怎么设置6,css怎么设置字体阴影
- python的三个基本数字类型_Python基础学习--三 基本数据类型
- HDU 5455 Fang Fang(模拟)
- Structure SLAM 相关论文阅读(一):消影点/消失点/灭点检测提取
- Google Adsense西联快汇收款流程
- 儿子作恶,母亲受报应
- 8255A的控制字和C口状态字
- 2022前端面试必问的几个小问题,你学费了吗?
- java 粒度_java中粗粒度和细粒度的概念
- 修改浏览器User-Agent
- Echarts3 关系图-力导向布局图
- 【STM32H7教程】第89章 STM32H7的CAN FD总线基础之前世今生
- frozen ui php,推荐几个移动端前端UI框架
- Adobe illustrator快捷键整理
- U盘文件打不开了怎么恢复
- Android支付接入之Google In-app-Billing
热门文章
- 两个链表是否相交 + 赛马(分桶)
- 学术研究 | 仅仅因为方法 Too Simple 就被拒稿,合理吗?
- 【知识蒸馏】如何写好BERT知识蒸馏的损失函数代码(一)
- 【论文解读】ICLR2021 知识建模与信息抽取
- 一文速览EMNLP 2020中的Transformer量化论文
- 周志华教授:长文详细教你如何做研究与写论文?
- 深度学习之激活函数详解
- 【论文阅读】EMNLP 2018 基于自适应的多轮解码机制的神经机器翻译模型
- 活动丨想和大咖云风来场1对1的亲面交流吗?!快来分享你的《程序员修炼之道》学习心得!
- Java中List与ArrayList的区别及用法