在不同的Linux / Unix版本上运行GridGain节点时,我得到无法分配共享内存段错误。
如何解决?
答案 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通信。