小编典典

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

redis

全部:这是我的服务器内存信息,带有“ 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返回成功吗?


阅读 580

收藏
2020-06-20

共1个答案

小编典典

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的内容。

2020-06-20