システムのすべてのユーザーに同時にログインを試みさせました。私のサーバーはこのエラーでひざまずきました:
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 のエントリに出くわしました。その出力の一部を次に示します。
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の新しいコピーを開くのでしょうか(これは何が起こっているようです)クラスローダが起動時にロードするファイルのコピー? これのトラブルシューティングをどこから始めればよいかさえわかりません。