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

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

时间:2023-05-27 17:01:43浏览次数:54  
标签:memory RDB redis 内核 key 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 !!! 无语至极

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

标签:memory,RDB,redis,内核,key,rdb,内存
From: https://blog.51cto.com/u_15376515/6362659

相关文章

  • redis简单介绍
    Redis知识点&面试题总结来自githubRedis基础简单介绍一下Redis!简单来说Redis就是一个使用C语言开发的数据库,不过与传统数据库不同的是Redis的数据是存在内存中的,也就是它是内存数据库,所以读写速度非常快,因此Redis被广泛应用于缓存方向。另外,Redis除了做缓存之......
  • java面试(9)内存泄露
    1:Java中也存在栈内存泄露的情况?  在Java中,栈内存主要用于存储方法调用和本地变量。与堆内存不同,栈内存的分配和释放是由编译器和虚拟机自动处理的,通常不需要手动释放。  然而,如果在编写代码时出现一些问题,可能会导致栈内存泄露。以下是一些可能引起栈内存泄露的常见情......
  • 如何通过Python将JSON格式文件导入redis?
    摘要:如果希望将JSON文件导入到Redis中,首先要做的就是连接到redis服务。本文分享自华为云社区《Python将JSON格式文件导入redis,多种方法》,作者:梦想橡皮擦。在导入前需要先确定你已经安装Redis,并且可以启动相关服务。windows上启动redis的命令是redis-server.exer......
  • Linux 大页内存 Huge Pages 虚拟内存
    Linux为什么要有大页内存?为什么DPDK要求必须要设置大页内存?这都是由系统架构决定的,系统架构发展到现在,又是在原来的基础上一点点演变的。一开始为了解决一个问题,大家设计了一个很好的方案,随着事物的发展,发现无法满足需求,就在原来的基础上改进,慢慢的变成了现在的样子。不过技术革新......
  • 性能测试-分析内存瓶颈
    top或者free查看内存利用率看used的值有没有很高(一般持续超过70%就会认为可能有瓶颈)看buff/cache的值,通常情况比较大不是什么问题,如果系统需要更多内存时,buff/cache就会自动释放,但是如果占用了大量内存导致系统无法分配足够的内存给其他进程使用,就需要再分析和优化 top......
  • redis
    常用类型list  有序使用:队列列表类型可以使用rpush实现先进先出的功能,同时又可以使用lpop轻松的弹出(查询并删除)第一个元素,所以列表类型可以用来实现消息队列基于rpush+blpophash使用:Hash类型大家应该都不陌生,他就是一个键值对集合,Hash相当于一个string类型的key和......
  • PCI5565反射内存
    PCI5565反射内存具备多项特性,使其成为高效的数据传输解决方案。首先,它是一种高速的网络,支持nGbaud数据传输,可以快速处理大量数据。其次,PCI5565反射内存易于使用,无需过多的操作步骤即可实现数据传输。另外,它的可扩展性非常强,可方便地升级到其他形式。与操作系统和处理器无关的特性也......
  • LabVIEW|小技巧:同址操作节省内存空间
      在LabVIEW中,有时候对于同一个数组、同一个簇或者其他数据容器的数据操作,如下图的搜索后再进行替换,这个时候LabVIEW会生成一个原数组的副本数组给替换函数使用,这就造成内存的浪费;解决方法是:使用右边的同址操作结构,即对于同一地址数组的不同操作,这样不会产生容器副本,节省了空间......
  • Linux 安装 Redis
    一、概要1.环境(1)Redis6.2.7,点击可检查最新版本;(2)RockyLinux9.1二、安装与配置1.安装Redis的安装非常简单,官方针对Ubuntu/Debian系统提供了具体指引,对于其他Linux系统也可以通过Snapcraft进行安装。对于RHEL9系统,dnf库也内置了Redis,不过该Redis是6.2.7并非最新的......
  • linux 内存管理
    内存管理的目标外存是程序存储的地方,内存是进程运行的地方。内存管理的目标除了实现进程之间的隔离、进程与内核之间的隔离、减少物理内存并发使用的数量之外,还有以下几个目标。1、减少内存碎片,包括外部碎片和内部碎片。外部碎片是指还在内存分配器中的内存,但是由于比较分散,无......