排查redis占用内存高的排查方法
1、登陆服务器,查看tcp连接数netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'查看已经建立的连接数,即ESTABLISHED的数量,发现大多数建立的ESTABLISHED连接是java和redis之间的TCP连接。运行config get maxclients命令,查看redis的最大连接数,如果上述命令获取
1、登陆服务器,查看tcp连接数
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
查看已经建立的连接数,即ESTABLISHED的数量,发现大多数建立的ESTABLISHED连接是java和redis之间的TCP连接。
运行config get maxclients命令,查看redis的最大连接数,如果上述命令获取的连接数远大于redis自身的允许的最大最大连接数,说明过多的连接导致redis内存占用高。
查看监控,流量正常,也没有突发大流量进入。那很有可能是TCP连接后没有释放,找开发检查代码,是否存在方法获取redis的key后,没有close。增加关闭redis连接的代码即可。
2、查看redis是否存在过多空闲键
3、分析redis基本的内存信息
连接redis后,使用info memory命令查看redis内存的基本信息:
查看每个db key的数量:
查询redis已经连接的客户端数
查看单个redis key占用的空间 -- redis-memory-for-key -s ${host} -p ${port} key_name
如果redis是用的集群,找到key的槽位所在的节点,port用对应的节点即可。
寻找占用内存过高的key
4、内存快照分析
redis-rdb-tools 是一个 python 的解析 rdb 文件的工具,在分析内存的时候,主要用它生成内存快照。
安装redis-rdb-tools
1.使用pip安装
pip install rdbtools
pip install python-lzf # 加快转换速度
2.使用源码安装
# git clone https://github.com/sripathikrishnan/redis-rdb-tools
# cd redis-rdb-tools
# sudo python setup.py install
使用redis-rdb-tools 生成内存快照
rdb -c memory dump.rdb > dump.csv
执行完后会生成 CSV 格式的内存报告。包含的列有:数据库 ID,数据类型,key,内存使用量(byte),编码。内存使用量包含 key、value 和其他值。
通过内存快照,可以找出占用内存超大的单个key,分析问题key产生的原因。
5、redis内存限制
查看redis配置文件是否限制最大内存使用,如果不设置maxmemory或者设置为0,64位系统不限制内存,32位系统最多使用3GB内存,如果未设置可以通过如下命令进行设置:
1) 通过配置文件修改
在redis.conf配置文件中添加以下配置
//设置Redis最大占用内存大小为500M
maxmemory 500mb
2) 通过命令修改
Redis支持运行时通过命令动态修改内存大小
# 设置Redis最大占用内存大小为500M
config set maxmemory 500mb
# 获取设置的Redis能使用的最大内存大小
config get maxmemory
6、redis内存淘汰
内存淘汰策略
1. noeviction:redis默认内存淘汰策略,当内存使用超过配置的时候会返回错误,不会驱逐任何键
2. allkeys-lru:加入键的时候,如果过限,首先通过LRU算法驱逐最久没有使用的键
3. volatile-lru:加入键的时候如果过限,首先从设置了过期时间的键集合中驱逐最久没有使用的键
4. allkeys-random:加入键的时候如果过限,从所有key随机删除
5. volatile-random:加入键的时候如果过限,从过期键的集合中随机驱逐
6. volatile-ttl:从配置了过期时间的键中驱逐马上就要过期的键
7. volatile-lfu:从所有配置了过期时间的键中驱逐使用频率最少的键
8. allkeys-lfu:从所有键中驱逐使用频率最少的键
获取当前的内存淘汰策略
config get maxmemory-policy
修改redis.conf设置redis淘汰策略:
maxmemory-policy volatile-lru
通过命令修改淘汰策略:
config set volatile-lru allkeys-lru
更多推荐
所有评论(0)