2

Mina 2.0.8 を使用しているときに、ubuntu で開くことができるソケットの数を増やすにはどうすればよいですか? サーバーが約 1700 接続に達すると、ログに次のように表示されます。

2013-01-24 04:21:49,465 [NioSocketAcceptor-1] WARN  o.a.m.util.DefaultExceptionMonitor - Unexpected exception.
java.io.IOException: Too many open files
    at sun.nio.ch.ServerSocketChannelImpl.accept0(Native Method) ~[na:1.6.0_20]
    at sun.nio.ch.ServerSocketChannelImpl.accept(ServerSocketChannelImpl.java:163) ~[na:1.6.0_20]
    at org.apache.mina.transport.socket.nio.NioSocketAcceptor.accept(NioSocketAcceptor.java:159) ~[mina-core-2.0.8-SNAPSHOT.jar:na]
    at org.apache.mina.transport.socket.nio.NioSocketAcceptor.accept(NioSocketAcceptor.java:50) ~[mina-core-2.0.8-SNAPSHOT.jar:na]
    at org.apache.mina.core.polling.AbstractPollingIoAcceptor$Acceptor.processHandles(AbstractPollingIoAcceptor.java:506) ~[mina-core-2.0.8-SNAPSHOT.jar:na]
    at org.apache.mina.core.polling.AbstractPollingIoAcceptor$Acceptor.run(AbstractPollingIoAcceptor.java:447) ~[mina-core-2.0.8-SNAPSHOT.jar:na]
    at org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:64) [mina-core-2.0.8-SNAPSHOT.jar:na]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) [na:1.6.0_20]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) [na:1.6.0_20]
    at java.lang.Thread.run(Thread.java:636) [na:1.6.0_20]

ハードとソフトのファイル ハンドルが最大 331278 に設定されている場合、これはどのように可能ですか? 「ulimit -n」レポートの実行

331287

「sysctl fs.file-nr」レポートの実行

fs.file-nr = 1728 0 331287

/etc/security/limits.conf ファイルの内容

・ハードノファイル 331287
・ソフトノファイル 331287
4

1 に答える 1

2

上記の問題は2つのことが修正されたようです。

  1. 特に「root」ユーザーのファイル ハンドルを増やします。これは、limits.conf で「*」を使用する場合に含まれないためです。

  2. init.d スクリプトを編集して、作成中のプロセスの ulimit を強制的に設定するようにします。Ubuntu には、プロセス デーモン ファイル ハンドルを扱う既知の問題があるようです。このリンクには詳細があります: http://www.jayway.com/2012/02/11/how-to-really-fix-the-too-many-open-files-problem-for-tomcat-in-ubuntu/

于 2013-01-24T22:56:04.830 に答える