0

在不同的 Linux/Unix 版本上运行 GridGain 节点时,我得到Failed to allocate shared memory 段错误。

如何解决?

4

1 回答 1

0

在 Linux 或 Mac OS 上的同一台机器上启动的 GridGain 节点将尝试使用高吞吐量共享内存协议而不是 TCP 来相互连接。但是,Mac OS 中系统资源的默认限制极低,无法在同一机器上的多个节点之间使用共享内存 IPC 通信。要增加共享内存限制,请在终端中运行以下命令:

ulimit -n 4096
launchctl limit maxfiles 100000 100000
sudo sysctl -w kern.sysv.shmmax=33554432
sudo sysctl -w kern.sysv.shmall=33554432
sudo sysctl -w kern.sysv.shmseg=1024
sudo sysctl -w kern.sysv.shmmni=32

这些值应该足以运行多达 5 个具有共享内存通信的节点。如果您需要启动更多节点,请相应地更改值。例如,为了能够启动 10 个节点,上面的每个值都应该加倍。

上述更改将仅在重新启动之前生效。要使它们持久化,请将以下内容添加到/etc/launchd.conf(您可能必须创建它):

limit maxfiles 100000 100000

,以及以下内容/etc/sysctl.conf(您可能还必须创建它):

kern.maxfiles=40000
kern.maxfilesperproc=20000
kern.sysv.shmmax=33554432
kern.sysv.shmall=33554432
kern.sysv.shmseg=1024
kern.sysv.shmmni=32

之后,您的更改将在重新启动后继续存在。

TCP 回退

注意,当一个节点分配共享内存段失败时,它会透明地切换到 TCP 通信。

于 2014-02-10T09:04:03.793 回答