php如何解决网站大流量与高并发的问题?
分析
- 高并发构架的相关概念
- 并发:某个时间点,有多少个访问同时到来。
- 高并发 :通常一个系统的日pv在千万以上,有可能是一个高并发的系统
- 高并发的指标:
- QPS:每秒钟请求或者查询的数量,在互联网领域,指每秒响应请求数(指http请求)
- 吞吐量:单位时间内处理的请求数量,(通常由QPS与并发数决定)
- 响应时间:从请求发出到收到响应话费的时间,例如:系统处理一个http请求需要100ms,这个响应时间就是100ms
- pv:综合浏览量(page view) ,即页面浏览量或者点击量,一个访问客在24小时内访问的页面数量,同一个人浏览你的网站同一个页面,只记作一次pv
- UV:独立访客(Unique Visitor) ,即一定时间范围内相同访客多次访问网站,只计算为1个独立访客。
- 带宽:计算带宽大小需要关注两个指标,峰值流量和页面平均大小
- 日网站宽带= PV/统计时间(换算成秒)* 平均页面的大小(单位kb) * 8
- 峰值一般是平均值的倍数,根据实际情况订
- QPS 不等于 并发连接数
- QPS 是每秒HTTP请求数量,并发连接数是系统同时处理请求数量
- 峰值每秒请求数(QPS) = (总的pv * 80%)/ (6小时秒数*20%)
- 80% 的访问量集中在20%的时间 6小时指:上午2小时,下午2小时,晚上2小时
- 压力测试 的指标
- 测试能承受的最大并发数值,测试最大承受的QPS值,
- 压力测试工具
- ab,wrk,http_load,web Bench , Siege , Apache JMeter
- ab:全称apache benchmark ,是apache官方推出的工具,创建多个并发访问线程,模拟多个访问者同时对某一url地址进行访问。他的测试目标是基于url的,因此,他既可以用来测试apache的负载压力,也可以测试Nginx、lighthttp,tomcat、iis等其他web服务器的压力。
-
ab的使用
- 模拟并发请求100次,总共请求5000次 ----》 ab -c 100 -n 5000 待测试网站
- 注意事项
- 测试机器与被测试机器分开
- 不要对线上服务测试
- 观察测试工具ab所在机器,以及被测试的前端的cpu,内存,网络等都不超过最高限度的75%;
- 测试 www.baidu.com 并发量为100访问1000次
- QPS达到极限的处理
随着QPS的增长,每个阶段需要根据实际情况来进行优化,优化的方案也与硬件条件相关,网络宽带息息相关
QPS为50 的时候 属于小型网站,一般不需要优化
QPS为100 时就需要数据库缓存,数据库的负载均衡
QPS 为 800 带宽为8M时 需要处理cdn加速,负载均衡
QPS为 1000 使用memcache 缓存数据库缓存 ,使用静态页面缓存
QPS 为 2000 使用: 业务分类
- 高并发解决方案
流量优化: 做防盗链处理
前端优化: 减少HTTP请求,(图片和css,js合并),添加异步请求,启用浏览器缓存和文件压缩(例如图片压缩),
cdn加速,建立独立的图片服务器。
服务端优化: 页面静态化处理,并发处理,队列处理,
数据库的优化: 数据库的缓存,分库分表、分区操作,读写分离,负载均衡