高并发和大流量解决方案
问题:PHP如何解决网站大流量与高并发的问题?
并发、我们说的高并发是什么?
并发:通常是指并发访问。也就是在某个时间点,有多少个访问同时到来。
通常如果一个系统的日PV在千万以上吗,有可能是一个高并发的系统。
有的公司完全不走技术路线,全靠机器堆,这不在我们的讨论范围。
高并发的问题,我们具体该关心什么?
(1) QPS:每秒钟请求或者查询的数量,在互联网领域,指每秒响应请求数(指HTTP请求);
(2) 吞吐量:单位时间内处理的请求数量(通常有QPS与并发数决定)
(3) 响应时间:从请求发出到收到响应花费的时间
(4) PV:综合浏览量,即页面的浏览量或点击量,一个访客在24小时内访问的页面数量。(同一个人浏览你的网站同一页面,只记作一次PV。)
(5) UV:独立访客,即一定时间范围内同一访客多次访问网站,只计算为一个独立访客。
(6) 带宽:计算带宽大小需关注两个指标,峰值流量和页面的平均大小。
日网站带宽 = PV / 统计时间(换算到秒)* 平均页面大小(单位KB)* 8
峰值一般是平均值的倍数,根据实际情况来定。
(7) QPS 不等于 并发连接数。
QPS是每秒HTTP请求数量,并发连接数是系统同时处理的请求数量。
(8) (总PV数*80%)/(6小时秒数*20%)= 峰值每秒请求数(QPS)
二八定律:80%的访问量集中在20%的时间
(9) 压力测试:测试能承受的最大并发,测试最大承受的QPS值。
测试机器与被测试机器分开。
不要对线上服务做压力测试。
观察测试工具所在机器,以及被测试的前端机的CP,内存,网络等都不超过最高限度的75%。
不同优化方案:
QPS:50 不需要优化
QPS:100 数据库缓存、数据库负载均衡 数据库瓶颈
QPS:800 带宽瓶颈 CDN加速,负载均衡
QPS:1000 静态HTML缓存
QPS:2000 做业务分离,分布式存储
流量优化:
- 防盗链处理
- 前端优化(减少HTTP请求、添加异步请求、启用浏览器缓存和文件压缩、CDN加速、建立独立的图片服务器)
- 服务端优化(页面静态化、并发处理、队列处理)
- 数据库优化(数据库缓存、分库分表分区操作、读写分离、负载均衡)