java - 异步 http 客户端(ning)创建更多线程?

标签 java http asynchronous ning

我正在使用 ning异步 http 客户端实现非阻塞优点。做一个苹果 vs 苹果测试(非阻塞 vs 阻塞),我看到非阻塞版本正在提供更多请求样本,但是异步 http 客户端与其阻塞版本相比正在创建更多线程。这是预期的还是我缺少的东西?

压力测试结果

Async Http Client
jMeter - 2 threads, 120 seconds, 1 sec ramp up
Peak threads : 270
Heap usage: 600mb
Peak cpu usage: 30%
Total samples: 18228

Blocking version
jMeter - 2 threads, 120 seconds, 1 sec ramp up
Peak threads: 118
heap usage: 260mb
cpu usage: 18%
total samples: 1472

我正在创建一个连接线程池(重用它们)

AsyncHttpClientConfig.Builder builder = new AsyncHttpClientConfig.Builder();
builder.setRequestTimeoutInMs(2000);
builder.setMaximumConnectionsPerHost(10);
builder.setMaximumConnectionsTotal(100);
client = new AsyncHttpClient(builder.build());

我在这里遗漏了什么吗?我试着查看线程转储以查看是什么在创建线程,但没有发现任何有用的信息。 我敢打赌,每个生成的 http 连接都有一个线程,用于在异步 http 客户端中触发 I/O 完成时的回调。

最佳答案

编辑 2015 年 11 月 16 日

看起来 repo 移动了。参见 this line您可以在其中更改使用的 ThreadFactory。如果未设置,则看起来它使用默认值。这由 ChannelManager 使用 here .

您也可以在简单客户端上进行设置,如 here 所示

原始链接已删除

快速浏览一下代码——应用程序线程池似乎使用了一个 Executor 服务,它是一个缓存线程池,它根据需要创建线程。您可以使用构建器上的 setter 来设置客户端使用的执行器服务。

关于java - 异步 http 客户端(ning)创建更多线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10486613/

相关文章:

java - robocode引擎: how to design (write) the runtime engine -- the robot world

http - NodeJS 中的基本静态文件服务器

Flutter Http 响应正文从字符串到对象列表

c++ - 对 ReadFile 函数的异步调用返回 6 错误代码

javascript - 异步 JavaScript 程序中的函数调用到底是如何排序的?

javascript - 如何从异步调用返回响应?

java - java中的重载和重写既可以是静态多态又可以是动态多态吗?

java - 适用于 Windows 但不适用于 Linux 的应用程序

java - 如何从 Java 中的 JSON 对象中删除所有 JSON 格式(不仅仅是空格)?

javascript - 用于持久连接的 HTTP 分块的替代方案?