Java Apache HttpAsyncClient在负载下挂起

Java Apache HttpAsyncClient在负载下挂起,java,http,Java,Http,使用ApacheHttpAsyncClient Beta3,当我向各种服务器加载多达50个并发请求时,它似乎启动良好,我处理了大约3000个URL 但后来我碰到了一堵墙,在那里我通过日志中的对等异常重置了这些连接。此时,异步客户机只是挂起 如果异步客户机将连接重置作为异常传递给我的回调,但我的回调代码没有被调用,整个过程都被锁定,那么由对等机重置连接本身就可以了 2013-02-04 13:52:14,739 ERROR org.apache.http.nio.protocol.HttpAsyn

使用ApacheHttpAsyncClient Beta3,当我向各种服务器加载多达50个并发请求时,它似乎启动良好,我处理了大约3000个URL

但后来我碰到了一堵墙,在那里我通过日志中的对等异常重置了这些连接。此时,异步客户机只是挂起

如果异步客户机将连接重置作为异常传递给我的回调,但我的回调代码没有被调用,整个过程都被锁定,那么由对等机重置连接本身就可以了

2013-02-04 13:52:14,739 ERROR org.apache.http.nio.protocol.HttpAsyncRequestExecutor (I/O dispatcher 9): http-outgoing-139 [ACTIVE] HTTP protocol exception: Connection r
eset by peer
java.io.IOException: Connection reset by peer
        at sun.nio.ch.FileDispatcher.read0(Native Method)
        at sun.nio.ch.SocketDispatcher.read(SocketDispatcher.java:21)
        at sun.nio.ch.IOUtil.readIntoNativeBuffer(IOUtil.java:202)
        at sun.nio.ch.IOUtil.read(IOUtil.java:175)
        at sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:243)
        at org.apache.http.impl.nio.reactor.SessionInputBufferImpl.fill(SessionInputBufferImpl.java:97)
        at org.apache.http.impl.nio.codecs.AbstractMessageParser.fillBuffer(AbstractMessageParser.java:115)
        at org.apache.http.impl.nio.DefaultNHttpClientConnection.consumeInput(DefaultNHttpClientConnection.java:167)
        at org.apache.http.impl.nio.DefaultHttpClientIODispatch.onInputReady(DefaultHttpClientIODispatch.java:125)
        at org.apache.http.impl.nio.DefaultHttpClientIODispatch.onInputReady(DefaultHttpClientIODispatch.java:50)
        at org.apache.http.impl.nio.reactor.AbstractIODispatch.inputReady(AbstractIODispatch.java:112)
        at org.apache.http.impl.nio.reactor.BaseIOReactor.readable(BaseIOReactor.java:160)
        at org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvent(AbstractIOReactor.java:342)
        at org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvents(AbstractIOReactor.java:320)
        at org.apache.http.impl.nio.reactor.AbstractIOReactor.execute(AbstractIOReactor.java:280)
        at org.apache.http.impl.nio.reactor.BaseIOReactor.execute(BaseIOReactor.java:106)
        at org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor$Worker.run(AbstractMultiworkerIOReactor.java:604)
        at java.lang.Thread.run(Thread.java:662)

嗯,我通过切换到Netty解决了这个问题,它更稳定、更可预测。

问题是Peer是个混蛋。昨天晚上他在我家附近重置了我的连接,现在他也在对你做同样的事。我同意Peer可能是邪恶的,但我认为Peer不是唯一一个牵涉其中的人。事实上,我几乎在同一时间得到了35个这样的异常,这对我来说意味着异步客户机可能也值得指责。值得一提的是,我现在正在剥离异步客户机并尝试Netty。Netty中是否有像HttpAsyncClient这样的高级http客户机类?我今天看了一眼文档,但在我看来都很低级。。。