CloseableHttpAsyncClient-每秒的请求上限为10k / s?

时间:2019-06-25 16:46:59

标签: java performance http

我有一个应用程序,我想每秒发送至少100k http请求,消息大小为2kb。但我似乎发送速度不会超过每秒10k。

我已经预先构建了所有要提出的要求,以确保在构建阶段不会限制自己。这是发送部分的样子-

CloseableHttpAsyncClient client = HttpAsyncClients
        .custom()
        .setMaxConnTotal(1000)
        .setMaxConnPerRoute(1000)
        .build();

client.start();

ArrayList<Future<HttpResponse>> futures = new ArrayList<>();
ArrayList<HttpPost> requests = new ArrayList<>();

/* ... I build 100k requests ... */

for(HttpPost request : requests) {
  futures.add(client.execute(request, null));
}

/* ... record start time ... */

for(Future future : futures) {
  future.get();
}

/* ... print change since start time ... */

我已经调整了MaxConnTotal,在1000之后它似乎没有更快的速度。我还测试了不同服务器的大小,核心范围从4到72,网络速度从5gbps到10gbps。即使在这72个核心10gbps机器上,MaxConnTotal超过1000,似乎也无济于事。

看起来机器的大小并不重要。不论大小,发送10万个请求通常大约需要10秒钟。

我还尝试将ulimit设置得更高一些,并将nofiles中的/etc/security/limits.conf的*和root都设置为无限制(当然,之后也会重新启动)。

我想念什么?为什么使用NIO http客户端无法在所有这些硬件上实现每秒10万个请求?

0 个答案:

没有答案