前言:
今天学到使用Sentinel进行服务流控,然后在使用可视化操作时这个QPS跟并发线程数把我搞迷糊了,硬是没看出来他两实质性的区别是啥。。。后面经过查资料发现,区别还是有的,下面将介绍一下
QPS:
每秒查询率(QPS,Queries-per-second)是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。
规定时间 ---- 最多处理多少流量
也就是该接口 能访问多少次。
线程数:
web项目中的线程数,表示web请求进来服务器,tomcat开启几个线程来处理这些web请求。
下面是我的tomcat配置信息:
server:
tomcat:
accept-count: 100 #等待队列长度 默认100
threads:
max: 20 #最大工作线程数 默认20
min-spare: 5 #最小工作空闲线程数 默认10
max-connections: 20 #最大连接数 默认10000
现在我给我的tomcat设置的最大线程数为20
下面是请求代码
@GetMapping("findAll")
@ApiOperation(value = "查询所有的菜品")
public Map<String, Object> findAll() {
// Thread thread = Thread.currentThread();
// set.add(thread);
// log.info("线程数为:" + set.size() + ",当前线程编号: " + thread.getId());
// try {
// Thread.sleep(2000);
// } catch (InterruptedException e) {
// e.printStackTrace();
// }
Map<String, Object> map = new HashMap<>();
List<Resfood> list = null;
try {
list = this.resfoodBiz.findAll();
} catch (Exception e) {
map.put("code", 1);
map.put("msg", e.getCause());
return map;
}
map.put("code", 1);
map.put("obj", list);
return map;
}
jmeter测试:
模拟4000次并发请求 线程数阈值设置20
此时控制台打印最多20是因为我们设置的最大线程数20
若此时阈值改为10,则最多打印10
这样应该就能好理解一点了
总结
QPS:单位时间内,请求接口次数限制。==》接口次数
单台机器所有入口流量的次数
线程数:单位时间内,请求并发数限制。==》并发次数
单台及其所有入口流量的并发线程数==》tomcat起了多少个线程==》Servlet容器
细品= =
后续
流控关联模式又是干嘛的嘞
这个好理解,当出现资源争抢时,当前资源给被关联资源让路
巴拉巴拉。。。
发现了一个写的很好的文章,还带动态图,可以不用自己截图了,哈哈哈