当前位置: 首页 > 面试题库 >

redis bgsave失败,因为fork无法分配内存

吕寒
2023-03-14
问题内容

全部:这是我的服务器内存信息,带有“ free -m”

              total       used       free     shared    buffers     cached
 Mem:         64433       49259      15174          0          3         31
 -/+ buffers/cache:      49224      15209
 Swap:         8197        184       8012

我的Redis服务器已使用46G内存,几乎有15G可用空间

据我所知,fork是写时复制的,当有15G可用内存时,它应该不会失败,这足以分配必要的内核结构。

此外,当redis服务器使用42G内存时,bgsave可以,而fork也可以。

我可以调整任何VM参数以使fork返回成功吗?


问题答案:

proc(5) 手册页中:

/ proc / sys / vm / overcommit_memory

该文件包含内核虚拟内存记帐模式。值是:

0:启发式过量使用(这是默认设置)

1:总是过量使用,从不检查

2:始终检查,永不过度使用

在模式0下,不检查设置为MAP_NORESERVE的mmap(2)的调用,并且默认检查非常弱,导致存在使进程“ OOM终止”的风险。在Linux
2.4下,任何非零值都表示模式1。在模式2(自Linux 2.6起可用)中,系统上的总虚拟地址空间限制为(SS + RAM *(r /
100)),其中SS为大小交换空间的大小,RAM是物理内存的大小,r是文件/ proc / sys / vm /
overcommit_ratio的内容。




 类似资料:
  • 问题内容: 我正在尝试使用linux名称空间。特别是pid名称空间。 我以为我可以用bash测试一下,但是遇到了这个问题: 从那里运行ls进行了核心转储。退出是唯一的可能。 为什么这样做呢? 问题答案: 该错误是由PID 1进程在新名称空间中退出引起的。 在bash开始运行之后,bash将派生几个新的子流程来执行某些操作。如果在不使用- f的情况下运行取消共享,则bash将具有与当前“取消共享”进

  • 我正在尝试为DMA Linux编写驱动程序,但我的驱动程序一直无法执行DMA_CONCENTER_alloc,我已经增加了CMA内存和CONCENTERY_pool。。。 我错过了什么? dmesg在物理CPU 0x0上引导Linux<br>Linux版本4.14.0-xilinx-v2018.2(oe-user@oe-host)(gcc版本7.2.0(gcc))#5 SMP抢占Sun二月17日2

  • 我正在尝试使用Xcode在iPhone6模拟器上运行Amazon应用程序。 该应用程序正在安装在iPhone模拟器中,但无法与其元素进行交互。 Appium版本-1.7.2 Xcode版本9.2 平台Mac-10.12.6 下载了应用程序-即xxx.app.ipa 日志: [Xcode]2018-02-13 21:23:08.009 xcodebuild[9868:75242]Error Doma

  • 我正在尝试编写一个C程序来侦听我机器上的端口。我遇到了一个奇怪的错误。 每当我尝试将套接字绑定到固定IP(或我的实际IP)时,我都会收到错误。但是,当我作为要绑定到的地址传递给绑定时,它的工作原理。 这些是我仅有的两个IP,因此0.0.0.0不能因为我可用的其他IP地址而起作用。 代码如下: