GridGain 6.2.0/6.2.1:打开太多文件描述符
问题描述:
在升级到gridgain 6.2.0之后,在mac和linux上运行我们的junit测试用例套件时,我们会得到“打开的文件过多”异常。个别的测试用例可以正常运行。我们只有在运行整个套件时才会出现这些错误。 Gridgain在6.2.x中保持打开的文件数是否有变化?以下是Mac上的例外情况(在Linux上,错误类似,但源于nio软件包)。在操作系统上增加打开的文件限制地址解决了这个问题,但是这个问题是一个错误还是只是一个额外的升级项目需要注意?GridGain 6.2.0/6.2.1:打开太多文件描述符
感谢
[2014-09-10 12:02:49,396] ERROR GridTcpDiscoverySpi - Failed to accept TCP connection
On MAC OS you may have too many file descriptors open (simple restart usually solves the issue) []
java.net.SocketException: Invalid argument
at java.net.PlainSocketImpl.socketAccept(Native Method)
at java.net.AbstractPlainSocketImpl.accept(AbstractPlainSocketImpl.java:398)
at java.net.ServerSocket.implAccept(ServerSocket.java:530)
at java.net.ServerSocket.accept(ServerSocket.java:498)
at org.gridgain.grid.spi.discovery.tcp.GridTcpDiscoverySpi$TcpServer.body(GridTcpDiscoverySpi.java:5037)
at org.gridgain.grid.spi.GridSpiThread.run(GridSpiThread.java:67)
答
从中GridGain的版本是你升级到6.2.1?这种错误很可能是由一台主机上的节点之间的共享内存通信引起的。它可以通过增加操作系统中的打开文件限制或关闭共享内存来解决。你能否检查你的例外是否没有共享内存而被复制?要将其关闭配置像这样的通信SPI:
<property name="communicationSpi">
<bean class="org.gridgain.grid.spi.communication.tcp.GridTcpCommunicationSpi">
<property name="sharedMemoryPort" value="-1"/>
</bean>
</property>
答
它看起来像问题是重复的Tomcat startup fails due to 'java.net.SocketException Invalid argument' on Mac OS X。 据我所知,解决方案是将JDK升级至7u60或更高,至少对我们有用。 (我们的实验表明,在MacOs上,即使打开文件限制的显着增加也不能解决问题。)
我们从6.1.6升级。关闭共享内存,就像您建议的那样工作。谢谢! 这个解决方案是否有任何缺点(我们使用gridgain主要用于跨群集的网格作业分布,即cpu密集型工作)? – 2014-09-11 16:01:09
此外,我注意到像你一样配置通信SPI可以摆脱下面的日志警告。这是预料之中的,因为我们的配置禁用了共享内存。这就是说,这是一个推荐的配置?我读了参考http://doc.gridgain.org/latest/GridTcpCommunicationSpi。感谢 '[2014-09-11 11:02:49,578] WARN GridTcpCommunicationSpi - 无法启动共享内存通信服务器。 []' – 2014-09-11 16:11:11