首先,明确几个概念
并发,在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行,但任一个时刻点上只有一个程序在处理机上运行。
QPS(TPS):每秒钟 request/事务 数量,在互联网领域,指每秒响应请求数(指http请求);
吞吐量:单位时间内处理的请求数量(通常由QPS与并发数决定);
响应时间:系统对一个请求做出响应的平均时间。例如系统处理一个HTTP请求需要200ms,这个200ms就是系统的响应时间(我认为这里应该仅包含处理时间,网络传输时间忽略)。
PV 综合浏览量,0-24点游客浏览量,同一个游客浏览同一个网页算是一个浏览量。
UV 相同访客多次浏览算是一个UV
日网站带宽 PV/统计时间(换算成秒)平均页面大小(kb)8
QPS不等于并发连接数,QPS是每秒http请求数量,并发连接数量是系统同时处理的连接数量
峰值QPS = 总PV数 * 80% / 6小时秒数 * 20%
首先要知道日QPS是多少 然后测单台服务器所能承受的QPS 也就是压力测试了
ab,wrk,http_load,Web Bench, Siege, Apache JMeter
ab -c 100 -n 5000 https://www.liguoqi.site/
成功的话,他会返回如页面大小,Requests per second(这个就是QPS了), 成功请求的次数,失败请求的次数等等
小型网站,一般的服务器就可以应付
假设关系型数据库的每次请求在0.01秒完成,假设单个页面只有一个sql查询,那么100QPS意味着一秒钟完成100次请求,但是此时我们并不能保证数据库查询能完成100次
优化方案 :数据库缓存层,数据库的负载均衡
假设我们使用百兆带宽,网站实际出口带宽为8兆,假设每个页面只有10K,在这个并发条件下,百兆带宽也把带宽吃光了。
优化方案:CDN加速,负载均衡
假设使用Memcache缓存数据库查询数据,每个页面对Memcache的请求大于直接对DB的请求。
Memcache的悲观并发数在2W左右,但有可能在之前内网的带宽已经吃光了,会表现出不稳定
优化方案:静态html页面缓存。
这个级别下,文件系统访问锁都成为了灾难
优化方案:做业务分离,分布式存储
小伙子写的不错