首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Icefaces数百次打开jsf和icefaces jar文件

Icefaces数百次打开jsf和icefaces jar文件
EN

Stack Overflow用户
提问于 2012-05-10 00:08:04
回答 3查看 469关注 0票数 0

我只是让我的系统的所有用户尝试同时登录。我的服务器因为这个错误而瘫痪了:

代码语言:javascript
复制
SEVERE: Socket accept failed
Throwable occurred: java.net.SocketException: Too many open files
    at java.net.PlainSocketImpl.socketAccept(Native Method)
    at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:449)
    at java.net.ServerSocket.implAccept(ServerSocket.java:473)
    at java.net.ServerSocket.accept(ServerSocket.java:441)
    at org.apache.tomcat.util.net.DefaultServerSocketFactory.acceptSocket(DefaultServerSocketFactory.java:59)
    at org.apache.tomcat.util.net.JIoEndpoint$Acceptor.run(JIoEndpoint.java:212)
    at java.lang.Thread.run(Thread.java:736)
May 9, 2012 10:04:11 AM org.apache.tomcat.util.net.JIoEndpoint$Acceptor run

我运行lsof命令来查看tomcat用户打开了哪些文件,并获得了一个巨大的文件列表。大多数文件看起来都很正常,但后来我遇到了大约700个相同文件的条目,下面是输出的一个片段:

代码语言:javascript
复制
java    12285 tomcat  256r   REG                8,3  1470076    1040880 /usr/share/tomcat7/shared/nmsc/icefaces-ace-3.0.0.RC2.jar
java    12285 tomcat  257r   REG                8,3  1955103    1040820 /usr/share/tomcat7/shared/nmsc/jsf-impl-2.1.4.jar
java    12285 tomcat  258r   REG                8,3  1955103    1040820 /usr/share/tomcat7/shared/nmsc/jsf-impl-2.1.4.jar
java    12285 tomcat  259r   REG                8,3   271669    1040879 /usr/share/tomcat7/shared/nmsc/icefaces-3.0.0.RC2.jar
java    12285 tomcat  260r   REG                8,3  1470076    1040880 /usr/share/tomcat7/shared/nmsc/icefaces-ace-3.0.0.RC2.jar
java    12285 tomcat  261r   REG                8,3  1470076    1040880 /usr/share/tomcat7/shared/nmsc/icefaces-ace-3.0.0.RC2.jar
java    12285 tomcat  262r   REG                8,3  1470076    1040880 /usr/share/tomcat7/shared/nmsc/icefaces-ace-3.0.0.RC2.jar
java    12285 tomcat  263r   REG                8,3  1470076    1040880 /usr/share/tomcat7/shared/nmsc/icefaces-ace-3.0.0.RC2.jar
java    12285 tomcat  264r   REG                8,3  1470076    1040880 /usr/share/tomcat7/shared/nmsc/icefaces-ace-3.0.0.RC2.jar
java    12285 tomcat  265r   REG                8,3  1470076    1040880 /usr/share/tomcat7/shared/nmsc/icefaces-ace-3.0.0.RC2.jar
java    12285 tomcat  266r   REG                8,3  1470076    1040880 /usr/share/tomcat7/shared/nmsc/icefaces-ace-3.0.0.RC2.jar
java    12285 tomcat  267r   REG                8,3  1470076    1040880 /usr/share/tomcat7/shared/nmsc/icefaces-ace-3.0.0.RC2.jar
java    12285 tomcat  268r   REG                8,3  1470076    1040880 /usr/share/tomcat7/shared/nmsc/icefaces-ace-3.0.0.RC2.jar
java    12285 tomcat  269r   REG                8,3  1955103    1040820 /usr/share/tomcat7/shared/nmsc/jsf-impl-2.1.4.jar
java    12285 tomcat  270r   REG                8,3  1955103    1040820 /usr/share/tomcat7/shared/nmsc/jsf-impl-2.1.4.jar
java    12285 tomcat  271r   REG                8,3   271669    1040879 /usr/share/tomcat7/shared/nmsc/icefaces-3.0.0.RC2.jar
java    12285 tomcat  272r   REG                8,3  1470076    1040880 /usr/share/tomcat7/shared/nmsc/icefaces-ace-3.0.0.RC2.jar
java    12285 tomcat  273r   REG                8,3  1470076    1040880 /usr/share/tomcat7/shared/nmsc/icefaces-ace-3.0.0.RC2.jar
java    12285 tomcat  274r   REG                8,3   271669    1040879 /usr/share/tomcat7/shared/nmsc/icefaces-3.0.0.RC2.jar
java    12285 tomcat  275r   REG                8,3  1955103    1040820 /usr/share/tomcat7/shared/nmsc/jsf-impl-2.1.4.jar
java    12285 tomcat  276r   REG                8,3  1470076    1040880 /usr/share/tomcat7/shared/nmsc/icefaces-ace-3.0.0.RC2.jar
java    12285 tomcat  277r   REG                8,3  1955103    1040820 /usr/share/tomcat7/shared/nmsc/jsf-impl-2.1.4.jar
java    12285 tomcat  278r   REG                8,3   271669    1040879 /usr/share/tomcat7/shared/nmsc/icefaces-3.0.0.RC2.jar
java    12285 tomcat  279r   REG                8,3  1470076    1040880 /usr/share/tomcat7/shared/nmsc/icefaces-ace-3.0.0.RC2.jar
java    12285 tomcat  280r   REG                8,3  1470076    1040880 /usr/share/tomcat7/shared/nmsc/icefaces-ace-3.0.0.RC2.jar
java    12285 tomcat  281r   REG                8,3  1955103    1040820 /usr/share/tomcat7/shared/nmsc/jsf-impl-2.1.4.jar
java    12285 tomcat  282r   REG                8,3  1470076    1040880 /usr/share/tomcat7/shared/nmsc/icefaces-ace-3.0.0.RC2.jar
java    12285 tomcat  283r   REG                8,3   271669    1040879 /usr/share/tomcat7/shared/nmsc/icefaces-3.0.0.RC2.jar
java    12285 tomcat  284r   REG                8,3  1470076    1040880 /usr/share/tomcat7/shared/nmsc/icefaces-ace-3.0.0.RC2.jar
java    12285 tomcat  285r   REG                8,3  1955103    1040820 /usr/share/tomcat7/shared/nmsc/jsf-impl-2.1.4.jar

我增加了tomcat用户允许的文件句柄数量,让我度过了整个上午,但为什么tomcat要为每个HTTP请求打开一个新的icefaces和jsf副本(看起来就是这样),而不是使用类加载器在引导时加载的文件的副本?我甚至不知道从哪里开始解决这个问题。

EN

回答 3

Stack Overflow用户

发布于 2012-05-10 00:23:08

就我个人而言,我会从分析器开始(我使用YourKit,因为他们向开源开发人员提供免费副本),获取内存快照,然后搜索这些文件名。这应该会导致文件,URL或类似的对象,希望能提供一些线索,说明问题所在。如果没有,你将需要开始跟踪对象分配,这要昂贵得多,但可行。有其他分析器可用;)

票数 0
EN

Stack Overflow用户

发布于 2012-05-15 00:43:52

我刚刚运行了我们的ACE showcase示例,没有看到每个请求增加的文件句柄的行为。您是否正在应用程序中使用复合组件?Mojarra的版本中有一个bug,直到最近才被修复(Mojarra 2.1.7),这个bug与核心复合组件类相关:

http://java.net/jira/browse/JAVASERVERFACES-2113

它记录了已打开但未关闭的InputStreams。在Windows上,这会锁定文件并防止它们被重新部署。在其他系统上,这可能解释了您所看到的行为。

票数 0
EN

Stack Overflow用户

发布于 2013-03-22 23:18:49

您是否在使用新的G1垃圾收集器?如果是这样的话,您可能在某个库或代码中发现了一个bug。与以前的实现相比,新的G1垃圾收集器似乎不太倾向于关闭文件。

这里有一个写得很好的例子:http://mark.koli.ch/2011/01/leaky-pipes-remember-to-close-your-streams-when-using-javas-runtimegetruntimeexec.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10519880

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档