2012-01-06 9 views
6

que estoy obteniendo la siguiente advertencia cuando mi aplicación basada en 1.2 Akka trata de trabajar con más de 500 o más nodos de la red:Akka advertencia sobre "muchos casos" HashedWheelTimer

Jan 05, 2012 1:36:43 PM org.jboss.netty.util.internal.SharedResourceMisuseDetector 
WARNING: You are creating too many HashedWheelTimer instances. 
HashedWheelTimer is a shared resource that must be reused across the application, so that only a few instances are created. 

voy a profundizar más en el código Akka para saber dónde se está utilizando HashedWheelTimer y qué debo hacer para evitar que se creen demasiados. Mientras hago eso, pensé en publicar la advertencia aquí en caso de que uno de los expertos pueda darme un puntero o dos que puedan reducir y acelerar mi búsqueda, por favor.

Usando Akka 1.3-RC6, estoy recibiendo la siguiente excepción:

Jan 12, 2012 1:24:38 PM org.jboss.netty.util.HashedWheelTimer 
WARNING: An exception was thrown by TimerTask. 
org.jboss.netty.channel.ChannelException: Failed to open a socket. 
    at org.jboss.netty.channel.socket.nio.NioClientSocketChannel.newSocket(NioClientSocketChannel.java:49) 
    at org.jboss.netty.channel.socket.nio.NioClientSocketChannel.<init>(NioClientSocketChannel.java:83) 
    at org.jboss.netty.channel.socket.nio.NioClientSocketChannelFactory.newChannel(NioClientSocketChannelFactory.java:139) 
    at org.jboss.netty.channel.socket.nio.NioClientSocketChannelFactory.newChannel(NioClientSocketChannelFactory.java:86) 
    at org.jboss.netty.bootstrap.ClientBootstrap.connect(ClientBootstrap.java:218) 
    at org.jboss.netty.bootstrap.ClientBootstrap.connect(ClientBootstrap.java:188) 
    at akka.remote.netty.ActiveRemoteClient.connect(NettyRemoteSupport.scala:470) 
    at akka.remote.netty.ActiveRemoteClientHandler$$anonfun$channelClosed$1$$anon$4.run(NettyRemoteSupport.scala:599) 
    at org.jboss.netty.util.HashedWheelTimer$HashedWheelTimeout.expire(HashedWheelTimer.java:519) 
    at org.jboss.netty.util.HashedWheelTimer$Worker.notifyExpiredTimeouts(HashedWheelTimer.java:440) 
    at org.jboss.netty.util.HashedWheelTimer$Worker.run(HashedWheelTimer.java:379) 
    at java.lang.Thread.run(Thread.java:722) 
Caused by: java.net.SocketException: Too many open files 
    at sun.nio.ch.Net.socket0(Native Method) 
    at sun.nio.ch.Net.socket(Net.java:323) 
    at sun.nio.ch.Net.socket(Net.java:316) 
    at sun.nio.ch.SocketChannelImpl.<init>(SocketChannelImpl.java:101) 
    at sun.nio.ch.SelectorProviderImpl.openSocketChannel(SelectorProviderImpl.java:60) 
    at java.nio.channels.SocketChannel.open(SocketChannel.java:142) 
    at org.jboss.netty.channel.socket.nio.NioClientSocketChannel.newSocket(NioClientSocketChannel.java:47) 
    ... 11 more 
+0

Gracias Dan, me pegaste a la edición ... –

+0

Mi bola de cristal no puede determinar qué versión de Akka estás ejecutando. –

+0

Mis disculpas; He editado la publicación para reflejar que estoy usando Akka 1.2. –

Respuesta

5

se ha corregido en Akka 2,0-M1, ahora he portado la solución a 1,3 y que será en la próxima RC.

+0

Probaremos 1.3 y le haremos saber si eso soluciona el problema. Gracias, Viktor; que tengas un buen fin de semana. –

+0

Creo que encontré el problema y copié la solución. Será en el próximo RC de 1.3 –

+0

Hermoso; gracias Viktor! Lo descargaré y lo probaré en cuanto lo lance y le haré saber si eso resuelve el problema por mi parte ... ¡Gracias! :-) –

Cuestiones relacionadas