栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

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

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

事故表现: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 !!! 无语至极

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/461525.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号