2012-01-06 24 views
6

Tôi nhận được cảnh báo sau khi ứng dụng Akka 1.2 dựa trên tôi cố gắng làm việc với hơn 500 hoặc lâu hơn nút lưới:Akka cảnh báo về "Quá nhiều trường hợp 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. 

Tôi sẽ đào sâu hơn vào mã Akka để tìm ra nơi HashedWheelTimer đang được sử dụng và những gì tôi nên làm để tránh quá nhiều những người được tạo ra. Trong khi tôi làm điều đó, tôi nghĩ rằng tôi sẽ đăng cảnh báo ở đây trong trường hợp một trong những chuyên gia có thể cho tôi một hoặc hai con trỏ có thể thu hẹp và tăng tốc độ tìm kiếm của tôi, xin vui lòng?

Sử dụng Akka 1,3 RC6, tôi nhận được ngoại lệ sau đây:

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

Cảm ơn Dan, bạn đã đánh bại tôi để chỉnh sửa ... –

+0

Quả cầu pha lê của tôi không thể xác định phiên bản Akka bạn đang chạy. –

+0

Lời xin lỗi của tôi; Tôi đã chỉnh sửa bài đăng để phản ánh rằng tôi đang sử dụng Akka 1.2. –

Trả lời

5

Đã được cố định trong Akka 2.0-M1, bây giờ tôi đã backported sửa chữa đến 1,3 và nó sẽ được ở bên cạnh RC.

+0

Sẽ thử 1.3 và cho bạn biết nếu điều đó khắc phục được sự cố. Cảm ơn Viktor; có một ngày cuối tuần tốt đẹp. –

+0

Tôi nghĩ rằng tôi đã giải quyết vấn đề và khắc phục sự cố. Nó sẽ có trong RC tiếp theo là 1,3 –

+0

Đẹp; cảm ơn Viktor! Tôi sẽ tải xuống và kiểm tra nó ngay sau khi nó được phát hành và cho bạn biết nếu điều đó giải quyết vấn đề về phía tôi ... Cảm ơn! :-) –

Các vấn đề liên quan