高并发解决方案

首先,明确几个概念

并发,在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行,但任一个时刻点上只有一个程序在处理机上运行。

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了), 成功请求的次数,失败请求的次数等等

QPS达到50

小型网站,一般的服务器就可以应付

QPS达到100

假设关系型数据库的每次请求在0.01秒完成,假设单个页面只有一个sql查询,那么100QPS意味着一秒钟完成100次请求,但是此时我们并不能保证数据库查询能完成100次
优化方案 :数据库缓存层,数据库的负载均衡

QPS达到800

假设我们使用百兆带宽,网站实际出口带宽为8兆,假设每个页面只有10K,在这个并发条件下,百兆带宽也把带宽吃光了。
优化方案:CDN加速,负载均衡

QPS达到1000

假设使用Memcache缓存数据库查询数据,每个页面对Memcache的请求大于直接对DB的请求。
Memcache的悲观并发数在2W左右,但有可能在之前内网的带宽已经吃光了,会表现出不稳定

优化方案:静态html页面缓存。

QPS达到2000

这个级别下,文件系统访问锁都成为了灾难
优化方案:做业务分离,分布式存储

All posts

Other pages

1 条评论

  1. niro说道:

    小伙子写的不错

回复 niro 取消回复

您的邮箱地址不会被公开。 必填项已用 * 标注