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 相关文章推荐
mysqli_set_charset和SET NAMES使用抉择及优劣分析
Jan 13 PHP
php中判断数组是一维,二维,还是多维的解决方法
May 04 PHP
phpmailer中文乱码问题的解决方法
Apr 22 PHP
php生成年月日下载列表的方法
Apr 24 PHP
PHP实现的限制IP投票程序IP来源分析
May 04 PHP
PHP中常用的数组操作方法笔记整理
May 16 PHP
php使用pdo连接sqlite3的配置示例
May 27 PHP
Laravel 5.3 学习笔记之 安装
Aug 28 PHP
php使用curl模拟浏览器表单上传文件或者图片的方法
Nov 10 PHP
php策略模式简单示例分析【区别于工厂模式】
Sep 25 PHP
Laravel 5.1 框架Blade模板引擎用法实例分析
Jan 04 PHP
php设计模式之备忘模式分析【星际争霸游戏案例】
Mar 24 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
SESSION信息保存在哪个文件目录下以及能够用来保存什么类型的数据
2012/06/17 PHP
php中{}大括号是什么意思
2013/12/01 PHP
PHP命令行脚本接收传入参数的三种方式
2014/08/20 PHP
PHP 网站修改默认访问文件的nginx配置
2017/05/27 PHP
php面试中关于面向对象的相关问题
2019/02/13 PHP
Firefox和IE浏览器兼容JS脚本写法小结
2008/07/07 Javascript
jquery uaMatch源代码
2011/02/14 Javascript
完美解决AJAX跨域问题
2013/11/01 Javascript
简述JavaScript的正则表达式中test()方法的使用
2015/06/16 Javascript
JS截取与分割字符串常用技巧总结
2015/11/10 Javascript
Bootstrap实现下拉菜单效果
2016/04/29 Javascript
vue + element-ui实现简洁的导入导出功能
2017/12/22 Javascript
JS实现的文字间歇循环滚动效果完整示例
2018/02/13 Javascript
用Vue写一个分页器的示例代码
2018/04/22 Javascript
JS多个表单数据提交下的serialize()应用实例分析
2019/08/27 Javascript
JavaScript ES6 Class类实现原理详解
2020/05/08 Javascript
python中从str中提取元素到list以及将list转换为str的方法
2018/06/26 Python
python 3.7.0 下pillow安装方法
2018/08/27 Python
对python中dict和json的区别详解
2018/12/18 Python
Python 存储字符串时节省空间的方法
2019/04/23 Python
python按键按住不放持续响应的实例代码
2019/07/17 Python
使用Matplotlib绘制不同颜色的带箭头的线实例
2020/04/17 Python
CSS3 display知识详解
2015/11/25 HTML / CSS
linux面试相关问题
2012/08/11 面试题
本科生学习总结的自我评价
2013/10/02 职场文书
公司活动策划方案
2014/01/13 职场文书
简历中的自我评价怎么写
2014/01/29 职场文书
2014各大专业毕业生自我评价
2014/09/17 职场文书
乡村教师党员四风问题对照检查材料思想汇报
2014/10/08 职场文书
2014年世界艾滋病日宣传活动总结
2014/11/18 职场文书
会议欢迎词
2015/01/23 职场文书
主持人开场白台词
2015/05/29 职场文书
优秀志愿者感言
2015/08/01 职场文书
Golang实现AES对称加密的过程详解
2021/05/20 Golang
vue2实现provide inject传递响应式
2021/05/21 Vue.js
mysql 排序失效
2022/05/20 MySQL