事故表现:redis 状态正常,但客户端不能使用,定位日志结论,redis内存申请不通过,导致中断用户操作

解决办法

1.解锁相关配置(不能解决根本问题,根本原因来源于开发 使用姿势不对)

两种解决办法

一.打开系统层始终同意分配内存(不建议

编辑文件 /etc/sysctl.conf 添加 vm.overcommit_memory=1

内核参数overcommit_memory
它是 内存分配策略
可选值:0,1,2。
0,:表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程。
1:表示内核允许分配所有的物理内存,而不管当前的内存状态如何。
2: 表示内核允许分配超过所有物理内存和交换空间总和的内存。
二.解锁redis rdb快照失败依然可以进行执行命令

redis.conf修改

stop-writes-on-bgsave-error no
2.rdb文件 排查key大小(推荐!!!

需要准备python3、pip3 环境以及rdb文件

pip3 install rdbtools python-lzf

使用工具导入表格(文件越大,到处越慢)

rdb -c memory  ../dump.rdb >test.csv

导出到Windows电脑 按照size_in_bytes 栏 降序 即可 排查出 占用内存最大的key,如图单个key 占用700m !!! 无语至极

记一次redis数据库RDB内存事故排查处理_redis

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: redis数据库