首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >spring netty web应用程序的吞吐量

spring netty web应用程序的吞吐量
EN

Stack Overflow用户
提问于 2018-05-16 05:14:09
回答 1查看 2.1K关注 0票数 2

我想提高我的网络服务器的吞吐量。但是当我用高负载测试它时,我不明白到底发生了什么。

我在一台带有webflux cpu的计算机上运行spring spring boot 2.0.2, netty应用程序。

我用以下代码创建了一个简单的控制器:

代码语言:javascript
复制
@GetMapping("/test-delay")
public Mono<String> testGetWithDelay() throws InterruptedException {
    Thread.sleep(3000);
    return Mono.just("current time:" + LocalDateTime.now());
}

"Thread.sleep(3000)" --它是对同步工作的模仿。然后,我使用100个线程运行jmeter tests。我看到吞吐量仅为2.5 message/sec。我想应该是100 messages/3 sec (大约30条消息/秒)。

所以,我有两个问题:

  1. 为什么吞吐量这么低
  2. 我怎么处理呢?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-16 07:31:56

你的结果是正确的您可以得到2.5秒的消息,延迟3秒(在每个线程中),这给了我们2.5 * 3 = 7.5 = 8内核。网络流量默认使用availableProcessors()作为处理网络/工作IO的默认线程数。

因此,您需要做的是increase the number of processing threads或移动Thread.sleep(3000)块来分离ThreadPool/Executor (这样工作线程不会被阻塞),或者您的Thread.sleep(3000)代码应该在某种类型的非阻塞API中执行(例如,在网络流量中,您可以使用Mono.fromCallable)。

我建议您使用第二/第三种方法,因为不应该阻止非阻塞API。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50362871

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档