PHP高并发和大流量解决方案整理


Posted in PHP onDecember 24, 2019

一、高并发的概念

在互联网时代,并发,高并发通常是指并发访问。也就是在某个时间点,有多少个访问同时到来。

二、高并发架构相关概念

1、QPS (每秒查询率) : 每秒钟请求或者查询的数量,在互联网领域,指每秒响应请求数(指HTTP请求)

2、PV(Page View):综合浏览量,即页面浏览量或者点击量,一个访客在24小时内访问的页面数量

--注:同一个人浏览你的网站的同一页面,只记做一次pv

3、吞吐量(fetches/sec) :单位时间内处理的请求数量 (通常由QPS和并发数决定)

4、响应时间:从请求发出到收到响应花费的时间

5、独立访客(UV):一定时间范围内,相同访客多次访问网站,只计算为1个独立访客

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

7、日网站带宽: PV/统计时间(换算到秒) * 平均页面大小(kb)* 8

三、需要注意点:

1、QPS不等于并发连接数(QPS是每秒HTTP请求数量,并发连接数是系统同时处理的请求数量)

2、峰值每秒请求数(QPS)= (总PV数*80%)/ (六小时秒数*20%)【代表80%的访问量都集中在20%的时间内】

3、压力测试: 测试能承受的最大并发数 以及测试最大承受的QPS值

4、常用的性能测试工具【ab,wrk,httpload,Web Bench,Siege,Apache JMeter】

四、优化

1、当QPS小于50时

优化方案:为一般小型网站,不用考虑优化

2、当QPS达到100时,遇到数据查询瓶颈

优化方案: 数据库缓存层,数据库的负载均衡

3、当QPS达到800时, 遇到带宽瓶颈

优化方案:CDN加速,负载均衡

4、当QPS达到1000时

优化方案: 做html静态缓存

5、当QPS达到2000时

优化方案: 做业务分离,分布式存储

五、高并发解决方案案例:

1、流量优化

防盗链处理(去除恶意请求)

2、前端优化

(1) 减少HTTP请求[将css,js等合并]

(2) 添加异步请求(先不将所有数据都展示给用户,用户触发某个事件,才会异步请求数据)

(3) 启用浏览器缓存和文件压缩

(4) CDN加速

(5) 建立独立的图片服务器(减少I/O)

3、服务端优化

(1) 页面静态化

(2) 并发处理

(3) 队列处理

4、数据库优化

(1) 数据库缓存

(2) 分库分表,分区

(3) 读写分离

(4) 负载均衡

5、web服务器优化

(1) nginx反向代理实现负载均衡

(2) lvs实现负载均衡

扩展内容大家可以参阅:PHP如何解决网站大流量与高并发的问题

以上就是本次介绍的全部相关知识点,更多补充内容可以联系小编。

PHP 相关文章推荐
获取远程文件大小的php函数
Jan 11 PHP
在IIS7.0下面配置PHP 5.3.2运行环境的方法
Apr 13 PHP
PHP数组 为文章加关键字连接 文章内容自动加链接
Dec 29 PHP
PHP生成不同颜色、不同大小的tag标签函数
Sep 23 PHP
PHP empty函数报错解决办法
Mar 06 PHP
PHP基于GD库的缩略图生成代码(支持jpg,gif,png格式)
Jun 19 PHP
PHP设计模式之观察者模式实例
Feb 22 PHP
Zend Framework教程之模型Model基本规则和使用方法
Mar 04 PHP
PHP实现打包zip并下载功能
Jun 12 PHP
PHP中如何使用Redis接管文件存储Session详解
Nov 28 PHP
PHP7数组的底层实现示例
Aug 25 PHP
Yii 框架使用Forms操作详解
May 18 PHP
thinkphp5实现微信扫码支付
Dec 23 #PHP
PHP实现笛卡尔积算法的实例讲解
Dec 22 #PHP
PHP架构及原理知识点详解
Dec 22 #PHP
Laravel 验证码认证学习记录小结
Dec 20 #PHP
php文件上传原理与实现方法详解
Dec 20 #PHP
PHP使用PDO实现mysql防注入功能详解
Dec 20 #PHP
laravel框架数据库操作、查询构建器、Eloquent ORM操作实例分析
Dec 20 #PHP
You might like
PHP仿盗链代码
2012/06/03 PHP
基于php中使用excel的简单介绍
2013/08/02 PHP
php中二维数组排序问题方法详解
2015/08/28 PHP
PHP实现一维数组与二维数组去重功能示例
2018/05/24 PHP
jquery中常用的SET和GET$(”#msg”).html循环介绍
2013/10/09 Javascript
单元选择合并变色示例代码
2014/05/26 Javascript
js使用for循环与innerHTML获取选中tr下td值
2014/09/26 Javascript
一道关于JavaScript变量作用域的面试题
2016/03/08 Javascript
js中最容易被忽视的事件问题大总结
2016/05/15 Javascript
Vue.js动态添加、删除选题的实例代码
2016/09/30 Javascript
jQuery web 组件 后台日历价格、库存设置的代码
2016/10/14 Javascript
JavaScript数组去重的几种方法效率测试
2016/10/23 Javascript
Javascript 获取鼠标当前的位置实现方法
2016/10/27 Javascript
JavaScript基于Dom操作实现查找、修改HTML元素的内容及属性的方法
2017/01/20 Javascript
canvas实现动态小球重叠效果
2017/02/06 Javascript
使用Require.js封装原生js轮播图的实现代码
2017/06/15 Javascript
javascript触发模拟鼠标点击事件
2019/06/26 Javascript
详解如何在Vue项目中发送jsonp请求
2019/10/25 Javascript
JavaScript switch语句使用方法简介
2019/12/30 Javascript
Vue实现计算器计算效果
2020/08/17 Javascript
[44:10]2018DOTA2亚洲邀请赛 4.5 淘汰赛 EG vs VP 第一场
2018/04/06 DOTA
python实现向ppt文件里插入新幻灯片页面的方法
2015/04/28 Python
tensorflow识别自己手写数字
2018/03/14 Python
python 梯度法求解函数极值的实例
2019/07/10 Python
Python之虚拟环境virtualenv,pipreqs生成项目依赖第三方包的方法
2019/07/23 Python
用python画一只可爱的皮卡丘实例
2019/11/21 Python
Python安装与卸载流程详细步骤(图解)
2020/02/20 Python
Python爬虫模拟登陆哔哩哔哩(bilibili)并突破点选验证码功能
2020/12/21 Python
村干部培训班主持词
2014/03/28 职场文书
党的群众路线对照检查材料(个人)
2014/09/24 职场文书
党的群众路线教育实践活动领导班子整改方案
2014/10/25 职场文书
世界环境日活动总结
2015/02/11 职场文书
护士求职自荐信
2015/03/25 职场文书
pytorch中的torch.nn.Conv2d()函数图文详解
2022/02/28 Python
CSS3实现指纹特效代码
2022/03/17 HTML / CSS
Java多线程并发FutureTask使用详解
2022/06/28 Java/Android