2012-03-13 11 views
1

私の英語は3歳の赤ちゃんのようです。ファイルプール(接続プールなど)

最近、私は多くのファイルアクセスでウェブサイトを作った。

残念ながら、私のTomcatは私が短時間でリクエストを送信するとき、この問題が発生し、この次のエラーメッセージ

Fatal: Socket accept failed 
java.net.SocketException: Too many open files 
     at java.net.PlainSocketImpl.socketAccept(Native Method) 
     at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:408) 
     at java.net.ServerSocket.implAccept(ServerSocket.java:462) 
     at java.net.ServerSocket.accept(ServerSocket.java:430) 
     at org.apache.tomcat.util.net.DefaultServerSocketFactory.acceptSocket(DefaultServerSocketFactory.java:61) 
     at org.apache.tomcat.util.net.JIoEndpoint$Acceptor.run(JIoEndpoint.java:352) 
     at java.lang.Thread.run(Thread.java:662) 
org.apache.tomcat.util.net.JIoEndpoint$Acceptor run 

を与えた、私はあまりにも多くのストリームがこの仕事のためにそこに開かれたと思います。

誰もこの問題を解決する方法を知っていますか?

私の環境は{tomcat 6.0.35、java 1.6.0_31、centos 5} です。これはLinuxでのみ起こります。

ありがとうございました。

+0

私のクレイジーソースが必要です。 – jeon

+0

メールをお送りください。 – jeon

+0

重複している可能性があります。[Linux:socket accept - "開いているファイルが多すぎます"](http://stackoverflow.com/q/880557/651140) –

答えて

0

システムによって割り当てられた制限をチェック cat /proc/sys/fs/file-nr

(最後の数)

必要に応じて、より多くのを割り当て

編集/etc/sysctl.conf

追加/変更fs.file-max = xxxxx

適用します。また、設定されたユーザーの制限を有することができるsysctl -p

チェックcat /proc/sys/fs/file-max

を変更します。

+0

ページをリフレッシュするとサイズが大きくなります。そして、そこに私のソース問題があると思う。 – jeon

+0

すべてのストリームを終了してもよろしいですか? –

+0

ありがとうございました。それは河川問題だった。 – jeon