无法在GridGain中的Mac OS上分配共享内存段

时间:2014-02-10 09:04:04

标签: java gridgain

在不同的Linux / Unix版本上运行GridGain节点时,我得到无法分配共享内存段错误。

如何解决?

1 个答案:

答案 0 :(得分:0)

GridGain节点在Linux或Mac OS上的同一台机器上启动将尝试使用高吞吐量共享内存协议而不是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通信。