一 测试构造
修改service-edu
1 tomcat并发修改
server:
tomcat:
max-threads: 10 #tomcat的最大并发值修改为10,默认是200
2 controller测试方法
TeacherController中添加并发测试方法
/**
* 功能描述:并发测试
*
* @return R 返回给前端的数据
* @author cakin
* @date 2020/11/29
*/
@ApiOperation("测试并发")
@GetMapping("test_concurrent")
public R testConcurrent() {
log.info("test_concurrent");
return R.ok();
}
3 测试
访问 test_concurrent,立即得到响应结果。
二 Jmeter并发测试工具
1 JMeter下载和安装
下载地址:https://jmeter.apache.org/ apache-jmeter-5.2.1.zip
下载版本:apache-jmeter-5.2.1.zip,解压任意目录即可
2 配置
/bin/jmeter.properties 37行,改为简体中文
language=zh_CN
3 启动JMeter
- Windows
启动:双击bin/jmeter.bat运行文件
三 使用Jmeter测试高并发
1 添加线程组
2 配置线程并发
3 添加Http取样器
4 配置Http取样器
5 配置查看结果树
6 启动测试
7 测试并发
当test接口收到高并发访问请求时,同一服务器上的test_concurrent接口响应延迟严重。
四 服务雪崩
分布式系统环境下,通常会有很多层的服务调用。由于网络原因或自身的原因,服务一般无法保证 100% 可用。如果一个服务出现了问题,调用这个服务就会出现线程阻塞的情况,此时若有大量的请求涌入,就会出现多条线程阻塞等待,进而导致服务瘫痪。
如下图,对于同步调用,当底层的库存服务不可用时,商品服务请求线程被阻塞,当有大批量请求调用库存服务时,最终可能导致整个商品服务资源耗尽,无法继续对外提供服务。
由于服务与服务之间的依赖性,故障会传播,不可用沿请求调用链向上传递,会对整个微服务系统造成灾难性的严重后果,这就是服务故障的 “雪崩效应” 。