2013-01-24 1 views
2

Mina 2.0.8을 사용할 때 우분투에서 열 수있는 소켓 수를 늘리려면 어떻게해야합니까? 내 서버가 ~ 1700 회 정도 연결되면 로그에 다음과 같이 표시됩니다. Ubuntu에서 Mina를 사용하여 사용 가능한 소켓을 늘리는 방법은 무엇입니까?

 
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"는 /etc/security/limits.conf 파일의

fs.file-nr = 1728 0 331287

내용을보고보고

 
* hard nofile 331287 
* soft nofile 331287 
+1

웹 응용 프로그램을 실행하는 사용자에 대한 제한이 올바르게 설정되어 있습니까? ulimits는 사용자별로 설정됩니다. – user439407

+0

한계를'limits.conf'로 설정하려고 시도 했습니까? 어쩌면'ulimit -n'으로 보는 것은 현재의 쉘 사용자 만 유효하지만 Mina 데몬을 실행하는 사용자는 유효하지 않습니다 –

+0

위의 한계 내용을 추가했습니다; 데몬은 sudo를 사용하여 init.d를 통해 시작합니다. –

답변

2

위의 두 가지 문제가 해결 된 것 같습니다.

  1. limits.conf에서 "*"를 사용할 때 특별히 포함되지 않았기 때문에 "root"사용자의 파일 핸들을 특별히 늘립니다.

  2. 작성중인 프로세스에 대해 ulimit을 강제 설정하도록 init.d 스크립트를 편집하십시오. 우분투에는 프로세스 데몬 파일 핸들을 다루는 알려진 문제가 있습니다. 이 링크의 세부 정보 : http://www.jayway.com/2012/02/11/how-to-really-fix-the-too-many-open-files-problem-for-tomcat-in-ubuntu/

관련 문제