一些使用上遇到过的问题。

  • mc key限制。 长度限制250;不能有空格,中文。
  • mc超时时间设置。过大,会表现为set进去成功, 但get不出来。如果mc有打印verbose级日志的话会显示超时:
<34 set 111 0 8640000 3
> NOT FOUND 111
<35 get 111
> FOUND KEY 111 -nuked by expire

原因是:

Expiration times can be set from 0, meaning "never expire", to 30 days. Any time higher than 30 days is interpreted as a unix timestamp date. If you want to expire an object on january 1st of next year, this is how you do that.

see:https://code.google.com/p/memcached/wiki/NewProgramming#Expiration

原来,mc范围类型的时间,最大是设置为30天了(设置的时候要改为秒,也就是60*60*24*30秒)。超过这个值,就当做是unix 时间戳类型的时间。

一般时间戳类型的时间用得不多,mc最大时限设置为1个月,或者0就好了。

  • 单点雪崩问题。假设线上只有1台MC。忽然之间这台MC挂了。然后所有的请求都跑到数据库中去了。导致整个系统极慢甚至挂掉。就算此时立即恢复mc,mc重启了但是数据都没了。照样跑到数据库,导致挂掉。所以,线上环境要使用多台mc跑一致性hash。并且监控好mc的情况(使用率如何、是否在跑LRU了)
  • 使用率问题。根据slab allocator的原理。存放一个item的空间是已经分配好的。必定有浪费的情况(比如说set一个字符串到mc中, 这个字符串需要100b的空间,会把这个字符串放到128b大小的slab中)。这相差的28b就是被浪费掉的了。见do_item_alloc方法调用slabs_clsid:
unsigned int slabs_clsid(const size_t size) {int res = POWER_SMALLEST;if (size == 0)return 0;while (size > slabclass[res].size)if (res++ == power_largest)     /* won't fit in the biggest slab */return 0;return res;
}

一般来说,都要比起评估的值大40%左右(本来评估要1G内存,可能就要申请到1.4G内存了)。一个系统要申请多大的mc,需要根据实际情况评估mc的量。

  • 版本号问题。一个详情页的页面用行缓存,把请求从数据库拦截掉。key是post_1。原来存放的结构:

    {"title": "测试","id": 1
    }

    后来版本迭代。增加了一些属性:

{"title": "测试","id": 1,"content": "test aaaaaaa"
}

此时,如果key还是post_1的话,就有可能序列化失败从而抛异常。这种问题在研发、测试环境不容易出现,但是线上出现就麻烦了。要网维一个个的处理这种mc key,甚至直接flush_all整个mc。所以出现这种版本迭代要改变缓存结构的情况。一般增加版本号。比如说把key修改为:post_v2_1。

转载于:https://www.cnblogs.com/ELMND/p/4631195.html

memcached(十三)注意事项相关推荐

  1. PHP中memcached的使用

    1.下载并安装Memcache服务器端 官网,libevent:http://www.monkey.org/~provos/libevent/,Memcache:http://memcached.or ...

  2. 阿里云服务器如何安装memcached

    方法/步骤 1 使用Xshell登陆阿里云服务器. 请使用root帐号登陆.下面的操作全部在home目录里执行 2 安装libevent. 输入命令 yum -y install libevent-d ...

  3. JavaScript学习(四十三)—构造方法创建对象的图解和注意事项

    JavaScript学习(四十三)-构造方法创建对象的图解和注意事项 一.构造放法创建对象 之所以用构造放法创建对象就是为了解决工厂模式不能识别对象类型的问题.构造方法也可以被称为构造器,他的本质也是 ...

  4. 【第十三届蓝桥杯备战】C/C++解题时的一些个人小技巧和注意事项(持续更新中)

    [第十三届蓝桥杯备战]C/C++解题时的一些个人小技巧和注意事项(持续更新中) 输入输出 数组 数据结构 1. 线段树 调试 References 先说一些废话:我最近觉得写算法题就像是打格斗游戏一样 ...

  5. 第二百九十三,Memcached缓存

    Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度.Memcached ...

  6. Magent搭建Memcached集群

    原文地址:http://ultrasql.blog.51cto.com/9591438/1636374 Memcached集群介绍 由于Memcached服务器与服务器之间没有任何通讯,并且不进行任何 ...

  7. Linux(centOS)手动安装Apache+MySQL+PHP+Memcached+Nginx原创无错版

    最后更新时间:2012.3.21 =================== 第一步:Apache安装(已更新到2.2.22) =================== 下载 去 http://www.ap ...

  8. 第十三届全国大学生智能汽车竞赛 裁判系统使用说明

    第十三届全国大学生智能汽车竞赛 裁判系统使用说明 (竞赛秘书处 2018-7-1)   本文档介绍了第十三届大学生智能汽车竞赛的硬件.软件的使用方法.   参考文档: <第十三届届全国大学生智能 ...

  9. 2020年安徽赛区智能车竞赛有关事项通知(草案)

    各参赛高校: 2020年第十五届全国大学生智能汽车竞赛安徽赛区暨安徽省第十三届大学生智能汽车竞赛,由合肥工业大学和合肥职业技术学院联合承办.请各参赛高校密切关注全国大学生智能汽车竞赛官方网站(smar ...

最新文章

  1. 只有20%的iOS程序员能看懂:详解intrinsicContentSize 及 约束优先级/content Hugging/content Compression Resistance
  2. 测量几个光电传感器反向电容
  3. mysql docker 2003_解决远程连接mysql 报 2003错误的问题(docker)
  4. 一些powershell基本使用示例
  5. js获取上传文件内容
  6. Depth-first Search深度优先搜索专题6
  7. 我的世界服务器linux加mod,在Linux下搭建带MOD 我的世界(Minecraft)服务器
  8. 鸿蒙系统年底发布?华为人员看到这个山寨网站笑了
  9. com.alibaba.android,钉钉(com.alibaba.android.rimet) - 6.0.17 - 应用 - 酷安
  10. Xcode打包IPA包
  11. P8843 [传智杯 #4 初赛] 萝卜数据库
  12. webStorm下载旧版本
  13. uint8_t图像数据类型介绍
  14. blender UV基础
  15. 关于utf-8和big5编码的问题
  16. 高等数学笔记-乐经良老师-第四章-微分中值定理和导数的应用-第五节-曲线的曲率
  17. 用计算机怎么调闹钟,电脑闹钟怎么设置 win7电脑闹钟怎么设置
  18. java红黑树 冯舜玺_《数据结构与算法分析》(美)马克·艾伦·维斯(Mark Allen Weiss) 著;冯舜玺,陈越 译著【摘要 书评 在线阅读】-苏宁易购图书...
  19. 如何将苹果硬盘全部格式化
  20. 量子时空:普朗克长度与普朗克时间

热门文章

  1. 怎么让两个java文件关联,怎么把多个excel文件合并成一个【几个excle合并成一个】...
  2. DataFrame数据选取超全攻略
  3. moviepy音视频剪辑:视频半自动追踪人脸打马赛克
  4. 详解 gRPC 客户端长连接机制实现
  5. 政策解读|2023法定节假日安排发布了,HR需要跟进的三件事
  6. 注册表改win 7更新服务器,WIN7安装卡死在更新注册表设置真正解决办法
  7. [RK3399][Android7.1] 调试笔记 --- sdcard守护进程启动位置
  8. Longhorn时代,浏览器的终结?——关于Avalon和XAML
  9. 人物-作家-马克·吐温:马克·吐温
  10. bzoj 2069 [ POI 2004 ] ZAW —— 多起点最短路 + 二进制划分