memcached经典问题和现象
2024-09-24 16:22:36
缓存刷新时间集中问题
- 某个缓存失效了,导致其他节点的缓存命中率下降, 缓存中缺失的数据 去数据库查询.短时间内,会造成数据库服务器崩溃
- 需要将缓存失效时间离散分布在访问量比较低的时间段
multiget-hole问题
- 以用户为例: user-133-age, user-133-name,user-133-height .....N 个 key, 当服务器增多,133 号用户的信息,也被散落在更多的节点, 所以,同样是访问个人主页,得到相同的个人信息, 节点越多,要连接的节点也越多. 对于 memcached 的连接数,并没有随着节点的增多,而降低
- 把某一组 key,按其共同前缀,来分布.
比如 user-133-age, user-133-name,user-133-height 这 3 个 key, 在用分布式算法求其节点时,应该以 ‘user-133’来计算,而不是以 user-133-age/name/height 来 计算.
这样,3 个关于个人信息的 key,都落在同 1 个节点上,访问个人主页时,只需要连接 1 个节点.
永久数据被踢出
- 引起原因:惰性删除和LRU算法最近最少使用记录删除
- 如果 slab 里的很多 chunk,已经过期,但过期后没有被 get 过, 系统不知他们已经过期.
- 永久数据很久没 get 了,不活跃,如果新增 item,则永久数据被踢了.
- 当然,如果那些非永久数据被 get,也会被标识为 expire,从而不会再踢掉永久数据
- 解决方案:永久数据和非永久数据分开放
宕机或停服,缓存恢复问题
- 由于memcached不支持缓存的持久化,所以解决不了停服上线或者大面积宕机时,恢复缓存将是一个痛苦而长久的问题
- 解决方案:可以采用redis来替代
最新文章
- 1 Maximum Product Subarray_Leetcode
- cocospods 最新安装教程
- Mono.Cecil 初探(一):实现AOP
- in_array,array_search的使用
- Linux下安装mongodb详细过程
- 我这样理解js里的this
- xml Schema import
- tomcat bug之部署应用的时候经常会发上startup failed due to previous errors
- C/C++的编译器|编译环境(非常全面的比较)
- C#虚方法和覆写方法
- 初识NoSQL 快速认识NoSQL数据库 分析Analytics For Hackers: How To Think About Event Data
- C++ 操作法重载
- 运维角度浅谈MySQL数据库优化(转)
- 使用skin++进行MFC界面美化范例
- 测试框架mochajs详解
- Swift开发学习(两):Playground
- html meta标签使用及属性介绍
- Python迭代器详解
- 使用 nodeJs 开发微信公众号(设置自动回复消息)
- 【splunk】用正则表达式提取字段