2016-07-25 43 views
2

我的扩散服务器出现问题。在服务器日志中出现以下错误多次:PUSH-000191:扩散服务器:打开的文件过多

|WARN|Client Connector Thread|PUSH-000191|Connector 'com.pushtechnology.diffusion.io.nio. 
[email protected]:' 
- Unable to accept connection.|com.pushtechnology.diffusion.io.nio.AcceptSelector 
java.io.IOException: Too many open files 

我知道这可能是由于打开了太多的文件描述符。任何人有任何想法如何解决这个问题?

回答

1

当达到一个进程可同时打开的文件数量(相关文件描述符)时,将显示此消息。这可能是由几个不同的原因造成的,例如:

  • 解决方案代码的一部分泄露文件描述符(如果您使用的是发布者)。
  • 您的负载平衡器在使用后保持TCP套接字打开。

您可以确定通过运行JConsole和检查在MBeans/java.lang/OperatingSystem/Attributes值由操作系统强加的最大文件描述符计数器的当前值。您需要的数据在MaxFileDescriptorCountOpenFileDescriptorCount之下。当OpenFileDescriptorCount达到MaxFileDescriptorCount设置的限制时,会看到您看到的警告。

为了解决该问题,您需要增加MaxFileDescriptorCount值。这可以通过修改Diffusion的启动脚本完成。只需将下面一行添加到diffusion.sh

ulimit -n 8192 

Knowledge Base article包含围绕显示java.io.IOException: Too many open files警告信息的问题的详细信息。