2012-04-05 4 views
2

아래의 오류 pl에 대한 적절한 해결책은 ulimit을 사용하는 것이 해결책이 아닙니다.Jboss - java.net.SocketException : 열려있는 파일이 너무 많습니다.

환경 - 자바 7, 제이 보스 4.3.2.GA 빨간 모자에 우리는 적당한 부하 RHEL 5에서 유사한 오류가 발생했다

22:30:08,913 ERROR [JIoEndpoint] Socket accept failed 
java.net.SocketException: Too many open files 
at java.net.PlainSocketImpl.socketAccept(Native Method) 
at java.net.AbstractPlainSocketImpl.accept(AbstractPlainSocketImpl.java:396) 
at java.net.ServerSocket.implAccept(ServerSocket.java:522) 
at java.net.ServerSocket.accept(ServerSocket.java:490) 
at org.apache.tomcat.util.net.DefaultServerSocketFactory.acceptSocket(DefaultServerSocketFactory.java:61) 
at org.apache.tomcat.util.net.JIoEndpoint$Acceptor.run(JIoEndpoint.java:309) 
at java.lang.Thread.run(Thread.java:722) 
+2

이 문제를 일으키는 시나리오는 무엇입니까? –

+0

처음에는 Jboss가 시작될 때마다 250 개의 파일이 열리고 각 히트에는 100-120 개의 파일이 열리고 10-20 개의 파일이 닫힙니다. 제 경우에는 방금 내 응용 프로그램에 로그인하고 100 개 이상의 파일을 열어 두는 프로세스에 대해 로그 오프합니다. 30 명의 사용자가 로그인 할 때 부하 테스트를 수행하면 1000 개가 넘는 파일이 열리는 것을 볼 수 있습니다. 이 작업은 I/O 작업을 사용하지 않습니다. – onlykalu

답변

0

.

기본 최대 열린 파일 수 제한은 1024로 너무 낮습니다.

확인 : ulimit -n 102400

영구 수정 : 현재 세션에 대한 ulimit -n

수정 echo yourusername - nofile 102400 >>/etc/security/limits.conf 다시 시작 세션

도 참조 https://serverfault.com/questions/44182/is-there-a-way-to-set-ulimit-for-all-root-processes

+0

처음에는 "증가하는 ulimit은 나를위한 해결책이 아닙니다". 하지만 1024라면 정말 너무 낮습니다. – Vadzim

+0

나는이 일을했지만 작동하지 않으면 200,000 개의 파일에 대해서도 작동하지 않는다. – onlykalu

-1
당신은 때까지 아무것도 할 수 없습니다

ulimit를 늘리거나 더 많은 프로세스를 시작하십시오. 서버의 여러 인스턴스를 어떻게 실행할 수 있는지 모르겠습니다. 설명서를 확인하십시오. 행운을 빕니다!

0

코드 조각이 열려 소켓이 열려있는 것처럼 보입니다. 작업이 끝나면 Socket을 닫아야합니다.

+0

파일 일 가능성이 높다. 웹 애플리케이션은 일반적으로 소켓 자체를 열지 않습니다. – EJP

관련 문제