bgsave出错原因分析
来源:互联网 发布:dnf 登陆器源码 编辑:程序博客网 时间:2024/05/17 16:13
redis bgsave出错
权限问题 没有遇到过
dump.rdb所在的文件夹用户没有权限,导致dump.rdb文件停止更新,此时修改redis数据时会报错,原因是默认配置 stop-writes-on-bgsave-error yes当bgsave出错时数据将不能修改如下操作后可以更新数据: config set stop-writes-on-bgsave-error nodump.rdb文件也恢复更新redis的内存占用较大时,在上述操作后dump.rdb仍然会停止更新,并且slave服务器也不能同步,原因是操作系统的vm.overcommit_memory配置,如下操作dump.rdb文件恢复更新,slave数据也可以同步。
echo 1 > /proc/sys/vm/overcommit_memory
- 使用root用户启动没有上述问题
vm.overcommit_memory配置说明
vm.overcommit_memory 表示内核在分配内存时候做检查的方式。这个变量可以取到0,1,2三个值。对取不同的值时的处理方式都定义在内核源码 mm/mmap.c 的 __vm_enough_memory 函数中。
取 1 的时候 : 此时宏为 OVERCOMMIT_ALWAYS,函数直接 return 0,分配成功。
取 2 的时候: 此时宏为 OVERCOMMIT_NEVER,内核计算:内存总量×vm.overcommit_ratio/100+SWAP 的总量,如果申请空间超过此数值,则分配失败。vm.overcommit_ratio 的默认值为50。
取 0 的时候: 此时宏为 OVERCOMMIT_GUESS,内核计算:NR_FILE_PAGES 总量+SWAP总量+slab中可以释放的内存总量,如果申请空间超过此数值,则将此数值与空闲内存总量减掉 totalreserve_pages(?) 的总量相加。如果申请空间依然超过此数值,则分配失败。
以上为粗略描述,在实际计算时,如果非root进程,则在计算时候会保留3%的空间,而root进程则没有该限制。详细过程可看源码。
参考连接
- bgsave出错原因分析
- Redis:BGSAVE出错原因分析
- scrollToRowAtIndexPath出错原因分析
- cellForRowAtIndexPath出错原因分析
- jsp页面出错原因分析
- 项目部署出错,可能原因分析
- php session_start()出错原因分析及解决办法
- 一次exp导出出错的原因分析
- asp出错信息列表—原因与分析
- Asp出错信息列表—原因与分析
- x264在VC环境编译出错原因分析(转载)
- [转载]x264在VC环境编译出错原因分析
- ZZ x264在VC环境编译出错原因分析
- x264在VC环境编译出错原因分析(转载) .
- WEBQQ2.0协议分析(加入群出错原因)
- Python中Socket服务器打开端口出错原因分析 .
- Android上UMENG渠道打包工具出错原因分析
- wamp环境出错,apache启动不了的原因分析
- android:layout_height="match_parent"和android:layout_marginTop="100dp"同时作用
- DevExpress 编辑GridControl中合并单元格
- Bootstrap 网格系统
- Tinker热修复学习笔记
- 团战可以输、提莫必须死
- bgsave出错原因分析
- JavaScript基础
- 【OA】——hibernate映射关系编写技巧
- java 处理人民日报98年语料库处理复合标注词
- No write since last change (add ! to override)
- 利用jackson在json~bean~list之间的转换
- Struts框架(二)——对象
- TCP/IP三次我手四次挥手过程与对应状态转移图
- ZOJ - 2477 dfs [kuangbin带你飞]专题二