先来看几个重要的概念
qps
Queries Per Second 秒查询率QPS是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。
tps
是TransactionsPerSecond的缩写,也就是事务数/秒。它是软件测试结果的测量单位。一个事务是指一个客户机向服务器发送请求然后服务器做出反应的过程。客户机在发送请求时开始计时,收到服务器响应后结束计时,以此来计算使用的时间和完成的事务个数。
系统吞吐量几个重要参数:QPS(TPS)、并发数、响应时间
QPS(TPS):每秒钟request事务数量
并发数:系统同时处理的request事务数
响应时间:一般取平均响应时间
理解了上面三个要素的意义之后,就能推算出它们之间的关系:
QPS(TPS)= 并发数/平均响应时间
比如一个请求 的 时间是 10 ms, 那么单个线程的话 一秒钟qps 是 1/0.01 = 100。
多线程并发如果是 200,那么 qps 是 200 /0.01 = 20000。
来个例子
例如 一个应用有10W的用户
日活20% = 2W 用户
访问时间集中在 每天傍晚(下班了才有时间呀)的3小时
平均每个用户会打开应用 10 次,每次回 请求50次吧(访问不同页面和接口)
大致估算下
总请求数是 2W x 10 x 50 = 1000W
每个请求 大致耗时按50ms 来
最大QPS 1000W / ( 3 x 60 x 60 )= 926
最大并发数是 926 x 0.05 s = 46.3
有点不好理解,可以这样 想 一个请求耗时50ms ,如果是单线程 1 s 可以处理 20 个。现在有926 个请求,需要 926 / 20 =46.3 个线程。
那我们从自己的应用角度 如何评估性能呢?
假如我们的应用是
springboot + mysql 内置tomecat 这种简单项目
mysql 的并发数一般是2000
tomecat 是200
而我们应用配置的 mysql 的连接数一般是100 。
一个请求按照 50 ms 来吧。
那极限情况下
并发是 100
QPS 是 100 / 0.05 = 2000
参考地址
https://baike.baidu.com/item/QPS/4818554?fr=aladdin
https://jysperm.me/2016/12/qps-and-concurrent-connections/
https://my.oschina.net/wugong/blog/1633176
https://budget.leanapp.cn/
网友评论