QPS如何计算的

QPS如何计算的

什么是QPS?

  • QPS 即每秒查询率,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。QPS= req/sec = 请求数/秒 即每秒的响应请求数,也即是最大吞吐能力。

什么是TPS

  • 即服务器每秒处理的事务数。 TPS包括一条消息入和一条消息的出,加上一次用户数据库访问。(业务TPS = CAPS X 每个呼叫平均TPS)
  • 系统整体处理能力取决于处理能力最低模块的TPS值。

什么是PV

  • pv 是指页面被浏览的次数,比如你打开一网页,那么这个网站pv就算一次了

计算关系

  • QPS = 并发量 / 平均响应时间
  • 并发量 = QPS * 平均响应时间

计算步骤

  • 每天80%的访问集中在20%的时间里,这20%时间叫做峰值时间
  • ( 总PV数 * 80% ) / ( 每天秒数 * 20% ) = 峰值时间每秒请求数(QPS) 。

示例

  • ( 3000000 * 0.8 ) / (86400 * 0.2 ) = 139 (QPS)。
  • 一般需要达到139QPS,因为是峰值。
  • 问:如果一台机器的QPS是58,需要几台机器来支持?
  • 答:139 / 58 = 3

拓展

  • redis 官网 单实例可以支持100000 QPS 数据库实例可以支持1000QPS MQ也可以单机杠几万并发
  • 分库降低了数据库单点机器的负载,分表提高了数据操作的效率。尤其是write操作的效率
  • 负载均衡策略
      1. roundrobin 简单轮询 算法是动态的 对启动慢的服务会在运行中调整权重。
      1. static-rr 表示权重法 规则是静态的无法做到动态修改 对服务器数量无限制。
      1. leastconn 表示最少连接者处理,建议运用到长会话服务 不适合短会话协议 如HTTP 对启动慢的服务会在运行中调整权重
      1. source 根据请求源IP 对请求源IP地址进行哈希, 根据结果进行分配
      1. uri 根据请求的左端进行哈希,用可用服务器的权重总数除以hash值,这样能使 同样的一个URI地址总是打到同一个请求上。
      1. url_param 根据URL的请求参数
      1. hdr 根据HTTP请求头锁定一个HTTP请求
      1. rdp-cookie 根据cookie锁定并hash每一个TCP 对于没有cookie的可以使用roundrobin

疑问以及解决方案

  • 数据库只有1000qps 如何解决高并发呢?
      1. 将一个系统擦拆分为多个子系统,用dubbo来搞。这样就可以搞成多个库。
      1. 使用缓存 高并发一般都是读多场景,redis和数据库都缓存一份。
      1. 使用MQ 应对高并发写的场景,一个业务里十几次查库,高并发肯定搞挂数据库,redis 高并发写 存在LRU 淘汰策略,数据格式简单没有事务的支持。可以使用mq 消费系统可以控制在数据库可以接受的范围进行消费。
      1. 如果还高,只能在拆分分库分表,每个表的数据量小点 提高sql跑的性能。
      1. 读写分离 数据库大多数是读,可以将读请求搞到从库。
  • 高并发前端如何处理?
    • 被频繁调用,更新频率较低的页面,可以采用html静态化技术
    • 图片服务器分离
  • 如何设计出一个秒杀系统?
      1. 限流: 限制大部分流量只有少部分流量可以进入服务器后端。
      1. 削峰:
      1. 异步:也是削峰的一种体现。
      1. 内存缓存
      1. 可拓展:为了更多的用户,更大的并发 最好将系统设计成弹性可拓展的,如果流量来了 拓展机器就可以了
posted @ 2024-04-10 12:06  贺艳峰  阅读(66)  评论(0编辑  收藏  举报