QPS,TPS,RPS你知道多少?

六眼飞鱼酱① 提交于 2020-03-03 10:23:10

QPS:即Queries Per Second的缩写,每秒能处理查询数目。是一台服务器每秒能够相应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。

TPS:即Transactions Per Second的缩写,每秒处理的事务数目。一个事务是指一个客户机向服务器发送请求然后服务器做出反应的过程。客户机在发送请求时开始计时,收到服务器响应后结束计时,以此来计算使用的时间和完成的事务个数,最终利用这些信息作出的评估分。

RPS: 即Requests Per Second的缩写,每秒能处理的请求数目。等效于QPS

吞吐量: 每秒的响应请求数,也即是最大吞吐能力

计算关系:
QPS = 并发量 / 平均响应时间
并发量 = QPS * 平均响应时间

举例:

根据以上计算关系,我们来预估下单日访问量在 1000W 需要多大的QPS来支持:
通常情况下,80% 的访问量集中在 20%的时间,算一下这 1000w pv实际需要机器达到多少qps才能满足,
qps = (1000w * 0.8) / (24 * 3600 * 0.2)
qps = 462.9

JedisPool资源池优化建议:

1、maxTotal:最大连接数

以一个例子说明,假设:
一次命令时间(borrow|return resource + Jedis执行命令(含网络) )的平均耗时约为1ms,一个连接的QPS大约是1000
业务期望的QPS是50000
那么理论上需要的资源池大小是50000 / 1000 = 50个。但事实上这是个理论值,还要考虑到要比理论值预留一些资源,通常来讲maxTotal可以比理论值大一些。
但这个值不是越大越好,一方面连接太多占用客户端和服务端资源,另一方面对于Redis这种高QPS的服务器,一个大命令的阻塞即使设置再大资源池仍然会无济于事。
资源池大小:TPS / 平均响应时间

2、maxIdle minIdle

maxIdle实际上才是业务需要的最大连接数,maxTotal是为了给出余量,所以maxIdle不要设置过小,否则会有new Jedis(新连接)开销,而minIdle是为了控制空闲资源监测。
连接池的最佳性能是maxTotal = maxIdle ,这样就避免连接池伸缩带来的性能干扰。但是如果并发量不大或者maxTotal设置过高,会导致不必要的连接资源浪费。
可以根据实际总OPS和调用redis客户端的规模整体评估每个节点所使用的连接池

更多技术文章请关注公众号:架构师Plus,
扫码添加
在这里插入图片描述

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!