Tag Archives: memcached

memcached 内存分配及性能优化

By | 2016/12/07

memcached 介绍 memcached 是一个基于内存, 通过 key-value 方式访问和存储数据的工具. 一般通过缓存数据库查询和 api 调用等不经常变更的结果来减少程序直接访问数据库或 api 服务的次数, 进而提高动态 web 应用的性能; 由于 memcached 基于内存存储, 并没有持久化到硬盘中, 所以重启 memcached 或主机的操作会引起数据的丢失. 另外数据达到指定的内存值后, memcached 则采用基于 LRU(least recently used)算法自动删除不使用的缓存. 更具体的则包含以下特性: 协议简单(ascii 或 binary 协议) 基于 libevent 事件处理 内置的内存存储方式 不互相通信的分布式(由客户端程序负责分布式) memcached 事件模型 memcached 使用 libevent 作为其底层的网络库, 不过 libevent 将 Linux 类操作系统的 epoll, BSD 类操作系统的 kqueue 等事件处理功能封装成统一了接口, 即使服务器的连接数增加也能很好的达到… Read More »

memcached 整型数溢出漏洞处理说明

By | 2016/11/03

三个漏洞都是和整型溢出相关, 具体的影响及评分见 redhat cve 说明: cve-2016-8704 cve-2016-8705 cve-2016-8706 客户端使用 memcached 自有的二进制协议与 memcached server 进行交互, key 和 value 的长度被声明为 int 类型, body 长度声明为无符号整型, 部分函数执行下面任意一行代码的时候可能会引起整型溢出: vlen = c->binary_header.request.bodylen – (nkey + c->binary_header.request.extlen); int vlen = c->binary_header.request.bodylen – nkey; 整型溢出后则破坏 memcached 内部的 slab 数据结构, 这可能会引起缓存中数据的完整性, 另外也会引起 memcached 的崩溃. 测试环境中, 使用漏洞说明中的 python 代码验证后, 有很大的概率使 memcached 异常崩溃, centos 6, 7… Read More »