php解决网站高并发和大流量的问题

2017-11-16 hubo php开发

高并发架构相关的概念:

并发:并发的访问,某个时间点,有多少个访问同时到来。

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

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

响应时间:从请求发出到收到响应花费的时间,叫做响应时间。

PV:综合浏览量(page view),即页面浏览量或者点击量,一个访客在24小时内访问的页面数量。同一个人浏览网站的同一个页面,只记做同一次PV。

UV:独立访客,一定时间内,相同访客多次访问一个网站,记做1个独立访客。

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

日网站带宽 = PV/统计时间(换算到秒)*评价页面大小(单位KB)*8

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

高并发:一个系统的日PV在千万以上,有可能是一个高并发系统。

 

需要注意:

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

峰值每秒请求数(qps) = (总PV数*80%)/(6小时秒数*20%)   -------  80%的访问量集中在20%的时间

 

对于qps来说,应该做一些压力测试,为什么做这样一个测试?因为对于我们服务器来说,我们应该知道这台服务器最大能够承受多少qps,而我们网站PV一天是多少可以计算出峰值qps,我们可以根据需要来进行相应的一个优化,并不是说我们感觉到了网站的请求有点大了,再进行优化。所以压力测试是帮助我们测试能承受多大的并发,以及测试最大承受的qps值。


 

qps达到极限:

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

qps达到50--------------可以称之为小型网站,一般的服务器就可以应付。

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

qps达到800-------------假设我们使用百兆带宽,意味着网站出口的实际带宽是8M左右。假设每个页面只有10k,在这个并发下, 百兆带宽已经吃完。方案:CDN加速,负载均衡

qps达到1000------------假设我们使用Memcache来缓存数据库查询数据,每个页面对memcache的请求远大于直接DB的请求。   方案:静态html缓存

qps达到2000------------文件系统访问锁都成了灾难、方案:做业务分离,分布式缓存。

qps达到不同阶段,就会面临不同的瓶颈。针对不同瓶颈,有不同的解决方案。

 

 

 

高并发解决方案处理:

从流量方向进行优化:防盗链处理(把恶意的请求驱除门外)、

从前端优化:减少HTTP请求(把css、js文件、图片整合一起,请求一次)、添加异步请求、启用浏览器缓存和文件压缩、CDN加速(把前端的一些文件、资源都放到CDN中)、建立独立的图片服务器、

从服务端优化:页面静态化、并发处理、队列处理、·

从数据库优化:数据库缓存、分库、分表、分区操作。读写分离、负载均衡。

从web服务器优化:负载均衡、

网站备案号:京ICP备11043289号-1 北京市公安局网络备案 海1101084571
版权所有 北京育灵童科技发展有限公司 Copyright © 2002-2017 www.elight.cn, All Rights Reserved