TPS
- TPS:意思是每秒事务数,可以一个接口、多个接口、一个业务流程等等。一个事务是指事务内第一个请求发送到接收到响应的过程,以此来计算使用的时间和完成的事务个数。
获取TPS
可以增对网站的某个访问量最大的接口进行统计,使用redis的string自增策略,统计高峰期时间段的tps
TPS = 处理一个流程的总数量 /高峰时间段
TPS即每秒处理操作事务数,包括了
1)用户请求服务器
2)服务器自己的内部处理
3)服务器返回给用户
QPS
- QPS:意思是“每秒查询率”,是一台服务器每秒能够响应的查询次数,是对一个特定的查询服务器(比如是读写分离的架构,就是读的服务器)在规定时间内所处理流量多少的衡量标准。
获取QPS
-
针对一个web接口只有查询sql,使用redis的string自增策略,统计高峰期时间段的qps
( 总PV数 * 80% ) / ( 6小时秒数 * 20% ) = 峰值时间每秒请求数(QPS)
举例: 每天100w PV 的在单台机器上,这台机器最高QPS是50,则需要4台否则就会卡顿
( 1000000 * 0.8 ) / (21600 * 0.2 ) = 185 (QPS)
QPS参考
假设服务器时4核8G10M配置,最大QPS时50,之所以才50是因为有获取静态资源(I/O)、sql(这里按照0.01秒统计)查询操作
实现过程:通过压测工具对一个页面的访问,这个页面的静态资源的大小是1M并且这个页面只有静态资源获取和sql查询的操作
当外部QPS 是50 ,此时和服务器的QPS 相等,服务器层不需要优化 ,此时瓶颈在带宽上,日PV25w左右
假设我们使用10M带宽,意味着网站出口的实际带宽是 1M 左右,在这个并发条件下,10M带宽已经吃完;
解决方案:增加OSS服务存放图片、静态文件等,CDN加速、也可以升级带宽(最高升级100兆就不建议升级)
当外部QPS 是 100,此时是服务器的QPS 的4倍,理论上需要4台相同业务服务器,但是此时瓶颈主要在Mysql,只要优化Mysql即可,日PV50w左右
解决方案:在上面的基础上增加redis缓存层、es、数据库的负载均衡、主从复制(四个mysql节点即可)。
当外部QPS 是 2000,此时是服务器的QPS 的20倍,需要玩微服务了,日PV1000w左右
方案:做业务分离,分布式存储,微服务思想 如:现在有 库存系统 和 订单系统,可以把这两个系统分到不同的集群。