【发布时间】:2018-05-29 20:54:13
【问题描述】:
我们正在构建的应用程序预计会有大量的并发用户。我们正在尝试评估 Spring MVC 以构建我们的 API 层。
编写了以下 2 个处理程序 - 一个阻塞和另一个非阻塞:
@RequestMapping("/nblocking")
public DeferredResult<String> nonBlockingProcessing() {
DeferredResult<String> deferredResult = new DeferredResult<>();
executionService.execute(new Runnable() {
@Override
public void run() {
deferredResult.setResult(fetcher.load());
}
});
return deferredResult;
}
@RequestMapping("/blocking")
public String blockingProcessing() {
return fetcher.load();
}
我们通过 JMETER 运行测试,每个端点都有 3500 个并发用户。
在上面的代码中,fetcher.load 调用正在对 MySql(最大连接数设置为 200)和最大大小(50)的连接池进行数据库查询。
总体而言,非阻塞调用的吞吐量和平均时间更好。我们可以进行哪些其他改进或考虑哪些因素来使吞吐量更好?
【问题讨论】:
-
“我们还可以进行哪些其他改进或考虑哪些因素来提高吞吐量?”优化java代码..优化MySQL查询。优化 MySQL 设置..
-
fetcher.load()指令使用了多少时间?我会检查是否是加载问题
标签: java mysql spring spring-mvc spring-data