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


Posted in PHP onMarch 09, 2021

一、高并发的概念

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

 

二、高并发架构相关概念

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 相关文章推荐
pw的一个放后门的方法分析
Oct 08 PHP
PHP 数组遍历方法大全(foreach,list,each)
Jun 30 PHP
php更改目录及子目录下所有的文件后缀扩展名的代码
Oct 12 PHP
解析argc argv在php中的应用
Jun 24 PHP
使用Sphinx对索引进行搜索
Jun 25 PHP
PHP操作MySQL事务实例
Nov 05 PHP
php实现表单多按钮提交action的处理方法
Oct 24 PHP
PHP面向对象五大原则之里氏替换原则(LSP)详解
Apr 08 PHP
PHP类与对象后期静态绑定操作实例详解
Dec 20 PHP
php字符串过滤strip_tags()函数用法实例分析
Jun 24 PHP
Yii框架响应组件用法实例分析
Sep 04 PHP
TP5框架实现上传多张图片的方法分析
Mar 29 PHP
PHP获取php,mysql,apche的版本信息及更多服务器信息
Mar 09 #PHP
PHP 出现 http500 错误的解决方法
Mar 09 #PHP
PHP 实现链式操作
Mar 09 #PHP
PHP中SESSION过期设置
Mar 09 #PHP
PHP 判断字符串是中文还是英文, 或者是中英混合
Mar 09 #PHP
PHP 实现重载
Mar 09 #PHP
PHP 实现缩略图
Mar 09 #PHP
You might like
PHP 处理TXT文件(打开/关闭/检查/读取)
2013/05/13 PHP
浅析php适配器模式(Adapter)
2014/11/25 PHP
php中file_exists函数使用详解
2015/05/08 PHP
php curl发送请求实例方法
2019/08/01 PHP
PHP基于ip2long实现IP转换整形
2020/12/11 PHP
JavaScript 入门基础知识 想学习js的朋友可以参考下
2009/12/26 Javascript
javascript 用原型继承来实现对象系统
2010/03/22 Javascript
jquery 设置元素相对于另一个元素的top值(实例代码)
2013/11/06 Javascript
一款由jquery实现的整屏切换特效
2014/09/15 Javascript
jQuery实现DIV层淡入淡出拖动特效的方法
2015/02/13 Javascript
JQuery菜单效果的两个实例讲解(3)
2015/09/17 Javascript
JS中frameset框架弹出层实例代码
2016/04/01 Javascript
20分钟轻松创建自己的Bootstrap站点
2016/05/12 Javascript
ionic实现可滑动的tab选项卡切换效果
2020/04/15 Javascript
深入理解vue路由的使用
2017/03/24 Javascript
Angular 2父子组件数据传递之@Input和@Output详解 (上)
2017/07/05 Javascript
Vue代码分割懒加载的实现方法
2017/11/23 Javascript
vue动态改变背景图片demo分享
2018/09/13 Javascript
一步步教你利用Docker设置Node.js
2018/11/20 Javascript
详解vuex 渐进式教程实例代码
2018/11/27 Javascript
Vue组件通信中非父子组件传值知识点总结
2019/12/05 Javascript
JS实现导航栏楼层特效
2020/01/01 Javascript
javascript中layim之查找好友查找群组
2021/02/06 Javascript
python @propert装饰器使用方法原理解析
2019/12/25 Python
Django模型中字段属性choice使用说明
2020/03/30 Python
在python中使用nohup命令说明
2020/04/16 Python
Python map及filter函数使用方法解析
2020/08/06 Python
python利用xpath爬取网上数据并存储到django模型中
2021/02/26 Python
详解HTML5表单新增属性
2016/12/21 HTML / CSS
Java面试中常遇到的问题,也是需要注意的几点
2013/08/30 面试题
Java语言程序设计测试题判断题部分
2013/01/06 面试题
应用艺术专业个人的自我评价
2014/01/03 职场文书
绩效管理实施方案
2014/03/19 职场文书
工程造价专业求职信
2014/07/17 职场文书
作风建设年活动实施方案
2014/10/24 职场文书
幼师辞职信范文大全
2015/05/12 职场文书