【发布时间】:2018-10-26 00:50:50
【问题描述】:
我想提高我的网络服务器的吞吐量。 但是我不明白当我用高负载(jmeter)测试它时到底发生了什么。
我在带有8 core cpu 的计算机上运行spring boot webflux app (spring boot 2.0.2, netty)。
我用这段代码创建了一个简单的控制器:
@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 条消息/秒)
所以,我有两个问题:
- 为什么吞吐量这么低
- 我该如何管理它
谢谢
【问题讨论】:
-
为什么要这样?您在非阻塞服务中有一个阻塞操作,接下来您最多可以处理 8 个并发任务(实际上这取决于您的 CPU 架构),如果它们都在等待一段时间内什么都不会发生。通常,在使用响应式方法时,您不会获得更好的性能,但会获得更好的资源利用率,这意味着您可以使用更少的资源来完成与阻塞操作相同的操作。
-
谢谢,@M.Deinum 请给我一个建议,在我的情况下如何提高吞吐量?
标签: java spring netty throughput high-load