原文地址: https://www.cnblogs.com/prelude1214/p/13861563.html.
概述#
问题
解决
问题#
环境:window10 内存16G 4核
场景:使用redis存储一些高并发读写的数据,并发测试的时候偶发RDB快照失败,导致redis命令无法执行。
客户端报错:
根据该报错我们去找redis server的日志详细了解关于这个RDB error(当时我的redis是装在自己电脑上的,默认情况下redis log文件在redis安装文件的根级目录下,和redis-server.exe一个目录,redis-server.log)
Copy
config set stop-writes-on-bgsave-error no
这个修改是一次性的,只会修改redis当前运行的内存中的配置项的值,如果需要永久修改我们需要在redis配置文件redis.conf中修改stop-writes-on-bgsave-error的值。
一:快照文件当前登录用户无写权限
二:磁盘空间不足
三:因为bgsave需要fork一个子进程,如果内存不足以fork子进程的话也会报错
根据以上三个原因的解决方案有:
一:设置快照文件的写权限
二:清理磁盘空间
三:清理内存或者设置系统参数允许放行fork子进程当内存不足的时候,在linux内核中的vm.overcommit_memory参数(window暂时不知道怎么改)
如果 vm.overcommit_memory = 1,直接放行
vm.overcommit_memory = 0:则比较 此次请求分配的虚拟内存大小和系统当前空闲的物理内存加上swap,决定是否放行。
vm.overcommit_memory = 2:则会比较 进程所有已分配的虚拟内存加上此次请求分配的虚拟内存和系统当前的空闲物理内存加上swap,决定是否放行。
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.mushiming.com/mjsbk/6966.html