1. spring boot 异步请求
- 1.1 创建一个spring boot项目,并在pom.xml中引入需要的依赖内容
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
- 1.2 通过@EnableAsync注解开启异步执行
@SpringBootApplication
@EnableAsync
public class SpringBootAsyncApplication {
public static void main(String[] args) {
SpringApplication.run(SpringBootAsyncApplication.class, args);
}
}
- 1.3 创建一个AsyncTestController、sync 是同步请求,async是异步请求
@RestController
public class AsyncTestController {
@RequestMapping(value = "/sync", method = RequestMethod.GET)
public String sync() throws InterruptedException {
Thread.sleep(1000);
return "sync";
}
@RequestMapping("/async")
public Callable<String> callable() {
// 使用异步将不会阻塞tomcat的io读写线程池、使得增加系统的吞吐量
return new Callable<String>() {
@Override
public String call() throws Exception {
Thread.sleep(1000);
return "hello";
}
};
}
}
- 1.4 application.properties 配置文件
server.tomcat.max-threads=20
server.tomcat.max-connections=10000
2. jmeter 性能测压
1.Average:平均用户响应时间 24570毫秒
2.Median: 50%用户的响应时间 24570毫秒
3.90%Line:90%用户的响应时间 44091毫秒
4.95%Line:95%用户的响应时间 47040毫秒
5.99%Line:99%用户的响应时间 49018毫秒
6.Min: 最小响应时间 1011毫秒
7.Max: 最大响应时间 49034毫秒
8.Throughput:吞吐量 19.9/sec
1.Average:平均用户响应时间 1086毫秒
2.Median: 50%用户的响应时间 1047毫秒
3.90%Line:90%用户的响应时间 1276毫秒
4.95%Line:95%用户的响应时间 1303毫秒
5.99%Line:99%用户的响应时间 1325毫秒
6.Min: 最小响应时间 1002毫秒
7.Max: 最大响应时间 1351毫秒
8.Throughput:吞吐量 417.9/sec
- 2.3 测压结论
平均结果上异步处理和同步处理的性能相差20-40倍之间,然后这个测试并不是准确,但是从中也可以看出异步处理对整体的性能提升是非常可观。以上结论也是仅供参考。
3. ab 性能测压
4. 项目路径
https://github.com/chenshengyu/springBootAsync.git