高井发
在互联网时代,所讲的
井发、高井发,通常是指井发访问。也就是在某个时间点,有多少
个访问同时到来。通常如果一个系统的日PV在干万以上,有可能是一个高井发的系统.
高井发的问题,我们具体该关心什么?
- QPS:每秒钟请求或者查询的数量,在互联网领域,指每秒响应请
求数(指HTTP请求)。 - 吞吐量:单位时间内处理的请求数量(通常由QPS与井发数决定)。
- 响应时间:从请求发出到收到响应花费的时间。例如系统处理一个
HTTP请求需要100ms,这个100ms就是系统的响应时间。 - PV:综合浏览量(PageView),即页面浏览量或者点击量,
个访客在24小时内访问的页面数量,同一个人浏览你的网站同一页面,只记作一次PV UV:独立客(UniQueVisitor),即一定时间范围内相同访客,多次访问网站,只计算为1个独立访客
带宽:计算带宽大小需关注两个指标,峰值流量和页面的平均大小。
日网站带宽=PV/统计时间(换算到秒)平均页面大小(单位KB)
峰值一般是平均值的倍数,根据实际情况来定.
QPS不等于井发连接数
QPS每秒HTTP请求数量=并发连接数是系统同时处理的请求数(总PVM80%)/(6小时秒数*20%)
峰值每秒请求数(QPS)80%的访问量集中在20%的时间
压力测试
- 测试能承受的最大井发
-
测试最大承受的QPS值
常用性能测试工具
-
ab、wrk、http_load、WebBench、Siege、ApacheJMeter
注意事顶
- 测试机器与被测试机器分开
- 不要对线上服务做压力测试
- 观察测试工具ab所在机器,以及被测试的前端机的CPU,内存,网络等都不超过最高限度的75%
安装压力测试工具ab
yum -y install http-tools
QPS达到50
可以称之为小型网站,一般的服务器就可以应付
QPS达到100
假设关系型数据库的每次请求在0·01秒完成
假设单页面只有一个SQL查询,那么IOOQPS意味着1秒钟完成100
次请求,但是此时我们井不能保证数据库查询能完成100次
方案:数据库缓存层、数据库的负载均衡
QPS达到800
假设我们使用百兆带宽,意味着网站出口的实际带宽是8M左右
假设每个页面只有10K,在这个井发条件下,百兆带宽已经吃完
方案:(DN加速、负载均衡)
QPS达到1000
假设使用Memcache缓存数据库查询数据,每个页面对Mem的请求远大于直接对DB的请求.Mem的悲观并发数在2w左右,但有可能在之前内网带宽已经吃光,表现出不稳定.
方案:静态HTML缓存
QPS达到2000
这个级别下,文件系统访问锁都成为了灾难.方案:做业务分离,分布式存储