Java Jetty 7.4.5当useFileMappedBuffer=true时服务器泄漏文件描述符
我目前在Linux上Jetty 7.4.5.v20110725上运行java webapp时遇到了一个问题。我的Webapp提供静态内容,从开始时间戳算起几天后,文件描述符就用完了。我使用useFileMappedBuffer=true(在webDefaults.xml中)启动jetty服务器。我使用的是jdk1.6.0_30。如果您对如何解决此问题有任何建议,请告诉我Java Jetty 7.4.5当useFileMappedBuffer=true时服务器泄漏文件描述符,java,linux,jetty,memory-leaks,memory-mapped-files,Java,Linux,Jetty,Memory Leaks,Memory Mapped Files,我目前在Linux上Jetty 7.4.5.v20110725上运行java webapp时遇到了一个问题。我的Webapp提供静态内容,从开始时间戳算起几天后,文件描述符就用完了。我使用useFileMappedBuffer=true(在webDefaults.xml中)启动jetty服务器。我使用的是jdk1.6.0_30。如果您对如何解决此问题有任何建议,请告诉我 请注意,当useFileMappedBuffer=false(在webDefaults.xml中)时,不会出现此问题。如果下次
请注意,当useFileMappedBuffer=false(在webDefaults.xml中)时,不会出现此问题。如果下次应用程序的时间戳用完,请尝试找出哪些文件处于打开状态,以及打开的连接是否导致问题 尝试通过调用列出打开的文件(我想这是
lsof-p
,但在我写这篇文章时,请尝试或查看lsof手册页):
这将显示已建立的网络连接。查看是否有大量连接处于CLOSE\u WAIT
状态或类似状态,表明连接未正确关闭
还可以通过以下方式查看您的系统范围操作系统限制:
ulimit -a
它将显示单个进程可以打开多少个文件描述符。如果你有一个高流量的站点,并且默认值为1024 max fd,那么你可能需要提高这个值。如果您认为交通是问题所在,请参阅本指南:
但是,您已经声明,问题只会在几天后出现。这通常表示未正确关闭连接、文件资源等
如果不确定如何处理上述命令的输出,请随意粘贴它们
与问题无关,我建议您升级到最新的jetty 7.x
netstat -an
ulimit -a