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

Java 无法在GridGain中的Mac OS上分配共享内存段,java,gridgain,Java,Gridgain,在不同的Linux/Unix版本上运行GridGain节点时,我发现分配共享内存段失败错误 如何修复它?在Linux或Mac OS上的同一台机器上启动的GridGain节点将尝试使用高吞吐量共享内存协议而不是TCP相互连接。但是,Mac OS中系统资源的默认限制非常低,无法在同一机箱上的多个节点之间使用共享内存IPC通信。要增加共享内存限制,请在终端中运行以下命令: ulimit -n 4096 launchctl limit maxfiles 100000 100000 sudo sysctl

在不同的Linux/Unix版本上运行GridGain节点时,我发现分配共享内存段失败错误


如何修复它?

在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
(您可能需要创建它):

,并将以下内容添加到
/etc/sysctl.conf
(您可能还需要创建它):

之后,您的更改将在重新启动后仍然有效

TCP回退


请注意,当节点无法分配共享内存段时,它将透明地切换到TCP通信。

不错,但您不应该将MacOS X添加到标记中吗?您可以添加“不同Linux/Unix版本”的更多详细信息吗?
limit maxfiles 100000 100000
kern.maxfiles=40000
kern.maxfilesperproc=20000
kern.sysv.shmmax=33554432
kern.sysv.shmall=33554432
kern.sysv.shmseg=1024
kern.sysv.shmmni=32