Asynchronous apache http异步客户端中的I/O Dispatcher数
我使用ApacheHTTPAsync客户端(通过使用Kafka总线的数据)发出HTTP请求,并在回调中处理响应 我在我的日志中发现了一些有趣的回调行为,我想知道它是什么样子的 以下是部分代码(使用kafka的数据并发出http请求): 所以情况是,在某个时候,我启动了这个程序,它开始使用卡夫卡的数据。每次轮询的最大记录数为500 由于卡夫卡已经有很多未使用的数据,该程序面临着高吞吐量 现在,日志如下所示:Asynchronous apache http异步客户端中的I/O Dispatcher数,asynchronous,io,apache-httpclient-4.x,nonblocking,Asynchronous,Io,Apache Httpclient 4.x,Nonblocking,我使用ApacheHTTPAsync客户端(通过使用Kafka总线的数据)发出HTTP请求,并在回调中处理响应 我在我的日志中发现了一些有趣的回调行为,我想知道它是什么样子的 以下是部分代码(使用kafka的数据并发出http请求): 所以情况是,在某个时候,我启动了这个程序,它开始使用卡夫卡的数据。每次轮询的最大记录数为500 由于卡夫卡已经有很多未使用的数据,该程序面临着高吞吐量 现在,日志如下所示: [INFO ] 2018-04-29 04:11:29.234 [main] MyClas
[INFO ] 2018-04-29 04:11:29.234 [main] MyClass - Polling got records: 500
[INFO ] 2018-04-29 04:11:30.362 [I/O dispatcher 1] SUCCESS blablabla
[INFO ] 2018-04-29 xx:xx:xx.xxx [I/O dispatcher 2] SUCCESS blablabla
[INFO ] 2018-04-29 xx:xx:xx.xxx [I/O dispatcher 1] SUCCESS blablabla
[INFO ] 2018-04-29 xx:xx:xx.xxx [I/O dispatcher 1] SUCCESS blablabla
[INFO ] 2018-04-29 xx:xx:xx.xxx [I/O dispatcher 2] SUCCESS blablabla
...
...
[INFO ] 2018-04-29 06:28:35.003 [main] MyClass - Polling got records: 500
[INFO ] 2018-04-29 06:28:35.363 [I/O dispatcher 386] SUCCESS blablabla
[INFO ] 2018-04-29 xx:xx:xx.xxx [I/O dispatcher 385] SUCCESS blablabla
[INFO ] 2018-04-29 xx:xx:xx.xxx [I/O dispatcher 386] SUCCESS blablabla
[INFO ] 2018-04-29 xx:xx:xx.xxx [I/O dispatcher 385] SUCCESS blablabla
[INFO ] 2018-04-29 xx:xx:xx.xxx [I/O dispatcher 386] SUCCESS blablabla
...
[INFO ] 2018-04-29 06:31:35.003 [main] MyClass - Polling got records: 500
[INFO ] 2018-04-29 06:32:12.418 [I/O dispatcher 405] SUCCESS blablabla
[INFO ] 2018-04-29 xx:xx:xx.xxx [I/O dispatcher 406] SUCCESS blablabla
[INFO ] 2018-04-29 xx:xx:xx.xxx [I/O dispatcher 405] SUCCESS blablabla
[INFO ] 2018-04-29 xx:xx:xx.xxx [I/O dispatcher 406] SUCCESS blablabla
[INFO ] 2018-04-29 xx:xx:xx.xxx [I/O dispatcher 405] SUCCESS blablabla
...
[ERROR] 2018-04-29 xx:xx:xx.xxx [I/O dispatcher 405] FAILED blablabla! org.apache.http.ConnectionClosedException: Connection closed unexpectedly
[ERROR] 2018-04-29 xx:xx:xx.xxx [I/O dispatcher 406] FAILED blablabla! org.apache.http.ConnectionClosedException: Connection closed unexpectedly
// there the program stopped
以下是我无法理解的:
IOReactorConfig
您不是每次都在创建HttpAsyncClient的新实例,是吗?@oleg是的,我是。我也刚刚发现了这个bug。客户端尚未关闭,新客户端已创建。然后我们有很多闲置的客户。这就是io调度程序数量不断增加的原因。谢谢。您真的,真的应该为所有逻辑相关的应用程序重新使用同一个HttpAsyncClient实例requests@oleg我还有一些问题:1。I/O调度程序的数量意味着什么?是不同线程的数量吗?2.如何控制一个http客户端的最大I/O分派器数?是否由I/O调度程序执行?3.io调度器的数量与连接的数量之间有什么区别?谢谢你能更新你的问题吗?我会全部回答你的问题?
public class SomeCallback {
// ...
@Override
public void completed(final HttpResponse response) {
// do something
logger.info("{} - blablabla", status, ...);
latch.countDown();
}
@Override
public void failed(final Exception ex) {
// do something
logger.error("{} - blablabla", FAILED, ..., ex);
latch.countDown();
}
@Override
public void cancelled() {
// do something
logger.error("{} - blablabla!", CANCELLED, ...);
latch.countDown();
}
}
[INFO ] 2018-04-29 04:11:29.234 [main] MyClass - Polling got records: 500
[INFO ] 2018-04-29 04:11:30.362 [I/O dispatcher 1] SUCCESS blablabla
[INFO ] 2018-04-29 xx:xx:xx.xxx [I/O dispatcher 2] SUCCESS blablabla
[INFO ] 2018-04-29 xx:xx:xx.xxx [I/O dispatcher 1] SUCCESS blablabla
[INFO ] 2018-04-29 xx:xx:xx.xxx [I/O dispatcher 1] SUCCESS blablabla
[INFO ] 2018-04-29 xx:xx:xx.xxx [I/O dispatcher 2] SUCCESS blablabla
...
...
[INFO ] 2018-04-29 06:28:35.003 [main] MyClass - Polling got records: 500
[INFO ] 2018-04-29 06:28:35.363 [I/O dispatcher 386] SUCCESS blablabla
[INFO ] 2018-04-29 xx:xx:xx.xxx [I/O dispatcher 385] SUCCESS blablabla
[INFO ] 2018-04-29 xx:xx:xx.xxx [I/O dispatcher 386] SUCCESS blablabla
[INFO ] 2018-04-29 xx:xx:xx.xxx [I/O dispatcher 385] SUCCESS blablabla
[INFO ] 2018-04-29 xx:xx:xx.xxx [I/O dispatcher 386] SUCCESS blablabla
...
[INFO ] 2018-04-29 06:31:35.003 [main] MyClass - Polling got records: 500
[INFO ] 2018-04-29 06:32:12.418 [I/O dispatcher 405] SUCCESS blablabla
[INFO ] 2018-04-29 xx:xx:xx.xxx [I/O dispatcher 406] SUCCESS blablabla
[INFO ] 2018-04-29 xx:xx:xx.xxx [I/O dispatcher 405] SUCCESS blablabla
[INFO ] 2018-04-29 xx:xx:xx.xxx [I/O dispatcher 406] SUCCESS blablabla
[INFO ] 2018-04-29 xx:xx:xx.xxx [I/O dispatcher 405] SUCCESS blablabla
...
[ERROR] 2018-04-29 xx:xx:xx.xxx [I/O dispatcher 405] FAILED blablabla! org.apache.http.ConnectionClosedException: Connection closed unexpectedly
[ERROR] 2018-04-29 xx:xx:xx.xxx [I/O dispatcher 406] FAILED blablabla! org.apache.http.ConnectionClosedException: Connection closed unexpectedly
// there the program stopped