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 相关文章推荐
PHP4在WinXP下IIS和Apache2服务器上的安装实例
Oct 09 PHP
PHP的FTP学习(四)
Oct 09 PHP
PHP MySQL应用中使用XOR运算加密算法分享
Aug 28 PHP
php中判断字符串是否全是中文或含有中文的实现代码
Sep 16 PHP
win7计划任务定时执行PHP脚本设置图解
May 09 PHP
php时间戳格式化显示友好的时间函数分享
Oct 21 PHP
php实现html标签闭合检测与修复方法
Jul 09 PHP
PHP的serialize序列化数据以及JSON格式化数据分析
Oct 10 PHP
PHP+Ajax实现验证码的实时验证
Jul 20 PHP
PHP使用file_get_contents发送http请求功能简单示例
Apr 29 PHP
PHP实现的权重算法示例【可用于游戏根据权限来随机物品】
Feb 15 PHP
laravel框架中路由设置,路由参数和路由命名实例分析
Nov 23 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 If Else(elsefi) 语句
2013/04/07 PHP
thinkphp框架实现删除和批量删除
2016/06/29 PHP
PHP使用SOAP调用API操作示例
2018/12/25 PHP
json数据处理技巧(字段带空格、增加字段、排序等等)
2013/06/14 Javascript
解析页面加载与js函数的执行 onload or ready
2013/12/12 Javascript
动态加载dtree.js树treeview(示例代码)
2013/12/17 Javascript
使用js dom和jquery分别实现简单增删改
2014/09/11 Javascript
Javascript获取当前日期的农历日期代码
2014/10/08 Javascript
Javascript window对象详解
2014/11/12 Javascript
jQuery中closest和parents的区别分析
2015/05/07 Javascript
jQuery获取URL请求参数的方法
2015/07/18 Javascript
移动适配的几种方案(三种方案)
2016/11/25 Javascript
AngularJS 获取ng-repeat动态生成的ng-model值实例详解
2016/11/29 Javascript
js生成随机数方法和实例
2017/01/17 Javascript
Vue.js中extend选项和delimiters选项的比较
2017/07/17 Javascript
vue2.0+ 从插件开发到npm发布的示例代码
2018/04/28 Javascript
node版本管理工具n包使用教程详解
2018/11/09 Javascript
Nuxt.js 数据双向绑定的实现
2019/02/17 Javascript
vue中的双向数据绑定原理与常见操作技巧详解
2020/03/16 Javascript
微信小程序动态评分展示/五角星展示/半颗星展示/自定义长度展示功能的实现
2020/07/22 Javascript
vue实现简易图片左右旋转,上一张,下一张组件案例
2020/07/31 Javascript
[16:19]教你分分钟做大人——风暴之灵
2015/03/11 DOTA
[42:32]VP vs RNG 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.21.mp4
2020/07/19 DOTA
python requests 使用快速入门
2017/08/31 Python
python监控进程脚本
2018/04/12 Python
Python实现的计算器功能示例
2018/04/26 Python
python list是否包含另一个list所有元素的实例
2018/05/04 Python
详解HTML5常用的语义化标签
2019/09/27 HTML / CSS
SmartBuyGlasses台湾:名牌眼镜,名牌太阳眼镜及隐形眼镜
2017/01/04 全球购物
Links of London官方网站:英国标志性的珠宝品牌
2017/04/09 全球购物
介绍一下mysql的日期和时间函数
2013/03/28 面试题
Java程序员综合测试题
2014/04/25 面试题
公司给客户的感谢信
2015/01/23 职场文书
离婚协议书怎么写
2015/01/26 职场文书
canvas绘制折线路径动画实现
2021/05/12 Javascript
在windows server 2012 r2中安装mysql的详细步骤
2022/07/23 Servers