我有一个运行grails应用程序的jetty 9.1.3服务器.在os x上测试一切都很好但是在ubuntu上我注意到它正在打开大量的文件
如果我跑
lsof | awk '{ print $2; }' | sort -rn | uniq -c | sort -rn | head
Run Code Online (Sandbox Code Playgroud)
我看到两个平台:
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.罐
java 15238 16672 jetty 159r REG 202,1575389 1239666 /tmp/jetty-0.0.0.0-8080-root.war-_-any-6199673264702494065.dir/webapp/WEB-INF/lib/commons-collections-3.2.1.罐
这个模式在lsof输出中反复重复,它发生在类路径上的每个jar:
grep commons-collections lsof.log | wc -l
Run Code Online (Sandbox Code Playgroud)
138
任何人都可以解释这里可能发生的事情以及如何解决它?
我遇到了同样的问题.我在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
Run Code Online (Sandbox Code Playgroud)
这将告诉您最大文件打开限制(在我的情况下为1024).以root身份编辑/etc/security/limits.conf文件并添加以下两行:
* soft nofile 65535
* hard nofile 65535
Run Code Online (Sandbox Code Playgroud)
要使更改生效,您应关闭终端会话并打开一个新会话.您可以ulimit -n再次运行该命令以确保更改.现在再次启动Jetty并检查它是否运行正常.这样做对我来说.
| 归档时间: |
|
| 查看次数: |
2944 次 |
| 最近记录: |