一、Memcached调优思路
- 提高内存命中率(使数据从内存中读取,不去数据库中读取)
- 减少内存浪费
- 增加内存重复利用率
二、Memcached辅助调优命令
- Stats命令:查看服务器的运行状态和内部数据
- Stats settings:查看服务器设置
- Stats items/slabs:数据项统计/区块统计
三、Stats命令核心参数
- cmd_get:Memcached中总的查询次数 = get_hits + get_misses
- get_hits:查询时命中内存的次数
- get_misses:未命中的次数
- 缓存命中率 = (get_hits / cmd_get) * 100%
- curr_items:当前存储的数据条数
- total_items:总共存储的数据
- evictions:删除的数据条数(当数据真的被删除而不是放入类似回收站里才会被触发,是以lru的形式存储的),如果数值过大很大程度上说明lru的频率有问题,就要看热点数据的问题
- bytes:存储的数据量,存储了多少字节
- bytes_read:总共读取了多大的数据量(理论中数量越大越好,越大说明是在内存中读取数据而不是在数据库中读取数据)
- bytes_written:总的写入数量
- rusage_user:占用的用户时间
- rusage_system:占用的系统时间(一般代表占用CPU的时间)
- 如果CPU占用过高首先要查一下是否是Memcached的占用过高
- curr_connections:当前连接数
- total_connections:总共连接数
四、Stats其他命令
五、内存调优
- 问题
- 存不满Chunk
- 热点数据堆积
- Slab不能被page整除
- Page不能被Chunk整除
- 思路
- 调整Chunk大小
- 调整自增长因子
- 场景分析
- MSM(Memcached Session Manager)
- 等长数据
六、Memcached使用限制
- 不提供持久化机制
- 只有理论上的永久持久化【30天】(通过常量REALTIME_MAXDELTA设置)
- 不提供安全机制(要放在防火墙后)
- 理论最大key长度为250字节
- 单个item最大长度为1M
- 连接数:并发数200,软连接数1024
- 不提供冗余机制
七、Memcached使用建议
- 基于文本形式的存储,Memcached目前效率最高
- 作为数据库前端(加快查询速度、减少数据库访问次数)
- 作为热点数据(商城首页)缓存---预热
- 提升Web应用的速度
- 提高扩展性
- 缓存一些查询结果
- 强烈推荐使用多级缓存(本地缓存(Ehcache、Oscache)+ 内存应用(Memcached))
八、Memcached典型使用场景
------扫码进群,怕你禁不住福利的诱惑------