今天服务器提示不可用,查了了redis日志发现:

cat /data/redis/redis-server.log
[1316] 17 Jun 13:49:28.032 * 1 changes in 900 seconds. Saving...
[1316] 17 Jun 13:49:28.032 # Can't save in background: fork: Cannot allocate memory
[1316] 17 Jun 13:49:34.059 * 1 changes in 900 seconds. Saving...
[1316] 17 Jun 13:49:34.059 # Can't save in background: fork: Cannot allocate memory
[1316] 17 Jun 13:49:40.069 * 1 changes in 900 seconds. Saving...
[1316] 17 Jun 13:49:40.069 # Can't save in background: fork: Cannot allocate memory
[1316] 17 Jun 13:49:46.098 * 1 changes in 900 seconds. Saving...
[1316] 17 Jun 13:49:46.098 # Can't save in background: fork: Cannot allocate memory
[1316] 17 Jun 13:49:52.026 * 1 changes in 900 seconds. Saving...
[1316] 17 Jun 13:49:52.026 # Can't save in background: fork: Cannot allocate memory

因为Redis默认fork出一个进程来进行持久化到磁盘的工作,以防止主进程假死(大数据量时)。但是当主进程占用内存很大时,fork进程就不一定能够成功,所以出现这个错误。

修改方法:

# vim /etc/sysctl.conf
vm.overcommit_memory = 1
sysctl -p

Linux内核会根据参数vm.overcommit_memory参数的设置决定是否放行。

overcommit_memory文件指定了内核针对内存分配的策略,其值可以是0、1、2。
0, 表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程。
1, 表示内核允许分配所有的物理内存,而不管当前的内存状态如何。
2, 表示内核允许分配超过所有物理内存和交换空间总和的内存

或者修改配置文件,设置最大使用内存,最大使用内存会导致数据被踢出:

maxmemory 1294967296(byte)

所以不建议使用第二个方法

转载于:https://blog.51cto.com/ckl893/1790322

Can't save in background: fork: Cannot allocate memory相关推荐

  1. Redis占用大量内存并且报错 Can‘t save in background: fork: Cannot allocate memory

    Redis Can't save in background: fork: Cannot allocate memory 解决 先说如何解决: echo 'vm.overcommit_memory=1 ...

  2. redis可持续化存储的时候出现Can t save in background fork Cannot allocate memory

    解决方案 直接修改内核参数 vm.overcommit_memory = 1, Linux内核会根据参数 vm.overcommit_memory 参数的设置决定是否放行. vm.overcommit ...

  3. -bash: fork: Cannot allocate memory问题,进程数满了的解决办法

    -bash: fork: Cannot allocate memory问题,进程数满了的解决办法 参考文章: (1)-bash: fork: Cannot allocate memory问题,进程数满 ...

  4. fork: Cannot allocate memory 解决

    解决的方法是扩大最大进程数目 查看当前的最大进程数 #systemctl kernel.pid_max kernel.pid_max = 32768 #echo 65536 > /proc/sy ...

  5. Redis 写磁盘出错 Cannot allocate memory

    故障简介 早上查看Redis日志的时候发现Redis一直在报错 [1524] 24 Mar 10:00:56.037 * 1 changes in 900 seconds. Saving... [15 ...

  6. Cannot allocate memory问题

    -bash: fork: Cannot allocate memory问题,进程数满了的解决办法 今天一大早来到公司就发现一台远程服务器的进程满了,无法连接上远程服务器,如下图所示: 出现这种情况,主 ...

  7. 【Linux】 -bash-4.2#问题和Cannot allocate memory

    1,最近在实际使用linux的过程中中,遇到了一个小问题 在之前,看到根目录"/"下多了一个"~"目录,看到别的服务器都没有,于是忍不住rm -rf ~了.运行 ...

  8. mount cifs出现cannot allocate memory解决方法

    今天囧了啊,在ubuntu挂载的文件夹里面解压数据库,结果linux嫌太大挂掉了直接mount error(12): Cannot allocate memory折腾了好久,终于发现解决办法: 方法一 ...

  9. 解决Android 启动模拟器是出现“Failed to allocate memory: 8”错误提示

    Android 启动模拟器是出现" Failed to allocate memory: 8"错误,模拟器无法启动,如下: [2012-11-26 13:40:12 - TestS ...

最新文章

  1. h5 video视频播放的同时加水印,图片加水印同样的原理
  2. git push throws error: RPC failed; result=22, HTTP
  3. python3 json安装_python3下JSON和JsonPath
  4. 2、Ktor学习-自动重新加载;
  5. 命名空间_python基础 13 类命名空间于对象、实例的命名空间,组合方法
  6. common lisp 学习第三天 函数、注释
  7. 安心加科技打造多维度全场景式安心加物联平台
  8. MinIO Docker 快速入门 ​​​​​​​
  9. linux rz上传文件及出错解决方案
  10. c语言程序设计pdf下载上海交大,C语言程序设计第1章参考标准答案(上海交大出版社).doc...
  11. pclint html报告,PC-lint 9 + 中文手册
  12. android模拟器加速,配置android模拟器加速(虚拟化加速)
  13. Python SMTP 163邮箱发送邮件不成功
  14. python123作业怎么提交_使用python提交作业
  15. 基于C++和QT实现的简单数独游戏软件
  16. 中邮消费金融面试随笔
  17. vue 中 数字0和空字符串,=== 和== 用法和区别
  18. 有隔板高效过滤器和无隔板高效过滤器区别在哪里
  19. 论文代码复现之:AMR Parsing as Sequence-to-Graph Transduction
  20. F2FS源码分析系列文章目录

热门文章

  1. mysql测试什么鬼,where 1=1 是什么鬼?SQL中有这玩意?
  2. 手机写python爬虫_零基础开始写Python爬虫心得
  3. oracle对象依赖关系图,Oracle concepts 学习笔记(4)——Schema对象间的依赖关系
  4. Vue购物商城项目(二) 数据请求使用
  5. idea java sdk找不到指定文件路径_java-IntelliJ找不到任何声明
  6. 二叉搜索树的删除_LeetCode109.有序链表转换二叉搜索树
  7. Maven项目出现web.xml is missing and 《failOnMissingWebXml》is set to true,已解决
  8. c语言课程案例设计报告,C语言课程设计报告—范例解读.doc
  9. 20200126:(leetcode)三数之和 最接近的三数之和(含图解)
  10. php pg connect 扩展,php安装gnupg扩展