在linux(ubuntu)上使用jetty 9时打开的文件过多

在linux(ubuntu)上使用jetty 9时打开的文件过多,ubuntu,jetty,Ubuntu,Jetty,我有一台Jetty9.1.3服务器,运行grails应用程序。在OSX上测试时,一切正常,但在ubuntu上,我注意到它正在打开大量文件 如果我跑 lsof | awk '{ print $2; }' | sort -rn | uniq -c | sort -rn | head 在这两个平台上,我看到: OSX: 4231561 Ubuntu 2739315238 然后,我运行了一个完整的lsof以查看使用了哪些文件,并看到重复的条目,如: java 15238 16672 jetty me

我有一台Jetty9.1.3服务器,运行grails应用程序。在OSX上测试时,一切正常,但在ubuntu上,我注意到它正在打开大量文件

如果我跑

lsof | awk '{ print $2; }' | sort -rn | uniq -c | sort -rn | head 
在这两个平台上,我看到:

OSX:

4231561

Ubuntu

2739315238

然后,我运行了一个完整的lsof以查看使用了哪些文件,并看到重复的条目,如:

java 15238 16672 jetty mem REG 202,1 575389 1239666/tmp/jetty-0.0.0-8080-root.war--uany-6199673264702494065.dir/webapp/WEB-INF/lib/commons-collections-3.2.1.jar

java 15238 16672 jetty 159r REG 202,1 575389 1239666/tmp/jetty-0.0.0-8080-root.war--uany-6199673264702494065.dir/webapp/WEB-INF/lib/commons-collections-3.2.1.jar

这种模式在lsof输出中反复出现,并且在类路径上的每个jar中都会出现:

grep commons-collections lsof.log | wc -l
138


有人能解释一下这里可能发生了什么以及如何解决吗?

我也遇到了同样的问题。 我在Jetty 7、Jetty 8、Jetty 9.0.2和Jetty 9.1.5(始终在Ubuntu上)上部署了我的grails应用程序。 除最后一个版本jetty 9.1.5外,所有jetty版本都可以正常工作。 Windows 7上的Jetty 9.1.5也运行正常。 因此,Ubuntu上的Jetty 9.1.x似乎存在问题

我修复了编辑/etc/security/limits.conf文件的问题。 首先运行以下命令:

ulimit -n
这将告诉您最大的文件打开限制(在我的例子中是1024)。 作为root用户,编辑/etc/security/limits.conf文件并添加以下两行:

* soft nofile 65535
* hard nofile 65535
要使更改生效,应关闭终端会话并打开一个新会话。 您可以再次运行
ulimit-n
命令以确保更改。 现在再次启动Jetty并检查其运行是否正常。
这就是我的原因。

找到原因了吗?我有一个类似的问题,但是
lsof
输出显示了重复打开的js文件,这些文件来自
/tmp
中爆发的战争。