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

时间:2014-03-31 13:36:08

标签: ubuntu jetty

我有一个运行grails应用程序的jetty 9.1.3服务器。在os x上测试一切都很好但是在ubuntu上我注意到它打开了大量的文件

如果我跑

lsof | awk '{ print $2; }' | sort -rn | uniq -c | sort -rn | head 

我在两个平台上看到:

OS X:

423 1561

Ubuntu的

27393 15238

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

java 15238 16672 jetty mem REG 202,1 575389 1239666 /tmp/jetty-0.0.0.0-8080-root.war-_-any-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.0-8080-root.war-_-any-6199673264702494065.dir/webapp/WEB-INF/lib/commons-collections-3.2 .1.jar

这个模式在lsof输出中一遍又一遍地重复,它发生在类路径上的每个jar:

grep commons-collections lsof.log | wc -l

138

任何人都可以解释这里可能发生的事情以及如何解决这个问题吗?

1 个答案:

答案 0 :(得分:5)

我遇到了同样的问题。 我在Jetty 7,Jetty 8,Jetty 9.0.2和Jetty 9.1.5(总是在Ubuntu上)部署了我的grails应用程序。 所有Jetty版本都可以正常工作,除了最后一个Jetty 9.1.5。 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并检查它是否运行正常。 这样做对我来说。