日期:2014-05-16  浏览次数:20560 次

memcache命中率问题
本帖最后由 laozhao0000 于 2014-02-07 16:15:50 编辑
这个问题纠结了很长时间,贴出来请大牛们帮忙分析。

生产环境:
         5台PHP服务器作负载均衡,每台机器上分别装了memcache,程序在使用cache时将5台memcache作为一个集群。

问题:   
         STATS出来的结果丢失率很高,命中率只达20%,(需要说明的是每台的使用率都不高--程序用的少),miss值并非均匀分布,呈每5分钟整点递增200+的态势。

问题排查:
          1.crontab (环境很复杂,但可以确定生产服务没有开启)。
          2.在程序里记录5分钟定点的miss key,无异常。
         

STATS:

Current Items(total) 2051 (14542)
Hits 134416
Misses 492000
Request Rate (hits, misses) 0.07 cache requests/second
Hit Rate 0.01 cache requests/second
Miss Rate 0.05 cache requests/second
Set Rate 0.00 cache requests/second
------解决方案--------------------
memcache服务器之间是否做了同步?
------解决方案--------------------
启动的时候加参数 -M试试
------解决方案--------------------
引用:
Quote: 引用:

启动的时候加参数 -M试试



这个是个memcache 的LRU有关吧 

 Free: 2.0 GBytes (100.0%)  Hits: 134416 (21.5%)
 Used: 521.5 KBytes (0.0%)  Misses: 492000 (78.5%)

 这种情况会开启LRU吗?


memcache不像其它带有队列功能的Nosql,其本身自带的lru是用来保证新数据能够正常缓存的,禁止lru可以防止数据被系统策略性丢弃,我个人的建议是你在没有获取到更好的解决方案之前,可以试试