高并发架构相关概念

高并发架构相关概念

高并发:并发访问,在某个时间点有多少请求同时访问。

通常如果一个系统的日PV在千万以上,有可能是一个高并发的系统

QPS:每秒钟请求或者查询的数量,在互联网领域,指每秒响应请求数(HTTP请求)

吞吐量:单位时间内处理的请求数量(通常由QPS和并发数决定)

响应时间:从请求发出到收到响应花费的时间。如果系统处理一个HTTP请求需要100ms,这个100ms就是系统的响应时间

高并发应关注指标:

PV:综合浏览量,即页面浏览量或点击量,一个访客在24小时内访问的页面数量。同一用户重复浏览网站的同一页面,只记作一次PV 。

UV:独立访客,一定时间范围内相同访客多次访问网站,只计算为1个独立访客

带宽:计算带宽大小需要关注两个指标,峰值流量和页面平均大小

日网站带宽 = PV / 统计时间(秒) × 平均页面大小(KB) × 8

峰值一般是平均值的倍数,根据实际情况来定

QPS不等于并发连接数,QPS是每秒请求数量,并发连接数是系统同时处理的请求数量

峰值每秒请求数(QPS) = ( 总PV数 × 80%)/ (6小时秒数 * 20% )

80%的访问量集中在20%的时间

随着QPS的增长,每个阶段需要根据实际的情况来进行优化,优化的方案也与硬件条件,网络带宽息息相关

QPS达到50 小型网站,一般服务器就可以应付

QPS达到100 假设关系型数据库的每次请求在0.01秒完成 , 假设单页面只有一个SQL查询,那么100QPS意味着1秒钟完成100次请求,但此时我们并不能保证数据库查询能完成100次。此时,需要对数据库做缓存或负载均衡

QPS达到800 假设我们使用的百兆带宽,意味着网站出口的实际带宽是8M左右,假设每个页面只有10K,在这并发条件下,百兆带宽已经吃完。此时可以使用CDN加速,负载均衡

QPS达到1000 假设使用Memache缓存数据库查询数据,此时每个页面对Memcahe的请求远大于直接对DB的请求。Memcache的悲观并发数在2w左右,但可能在之前内网带宽已经吃光,表现出不稳定。此时可以使用HTML静态缓存

QPS达到2000 这个级别,文件系统访问锁都成为灾难 。此时,可能需要做业务分离,分布式存储

压力测试**:测试能承受的最大并发,测试最大承受的QPS值

常用的性能测试工具

ab,wrk,http_load

ab:全称apache benchmark ,是apache官方推出的工具

ab可以创建多个并发访问线程,模拟多个访问者同时多某一URL地址进行访问。他的测试目标是基于URL的,因此,它既可以用来测试apache的负载压力,也可以测试nginx,lighthttp,tomcat,iis等其他web服务器的压力。

ab的使用

模拟并发请求100次,总共请求5000次

ab -c 100 - n 5000 待测试网站

注意事项:

测试机器与被测试机器分开

不要对线上服务做压力测试

观察测试工具ab所在机器,以及被测试的前端机的CPU,内存,网络等都不要超过最高限度的75%