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