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

全部:这是我的服务器内存信息,带有“ 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的内容。

以上是 redis bgsave失败,因为fork无法分配内存 的全部内容, 来源链接: utcz.com/qa/415896.html

回到顶部