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 相关文章推荐
浅谈PHP强制类型转换,慎用!
Jun 06 PHP
PHP 冒泡排序 二分查找 顺序查找 二维数组排序算法函数的详解
Jun 25 PHP
从PHP $_SERVER相关参数判断是否支持Rewrite模块
Sep 26 PHP
一个好用的PHP验证码类实例分享
Dec 27 PHP
php实现购物车功能(上)
Jul 23 PHP
Zend Framework动作助手Redirector用法实例详解
Mar 05 PHP
Zend Framework连接Mysql数据库实例分析
Mar 19 PHP
ThinkPHP的常用配置选项汇总
Mar 24 PHP
使用PHPWord生成word文档的方法详解
Jun 06 PHP
yii框架结合charjs实现统计30天数据的方法
Apr 04 PHP
PHP设计模式之迭代器模式Iterator实例分析【对象行为型】
Apr 26 PHP
一次项目中Thinkphp绕过禁用函数的实战记录
Nov 17 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
解析CodeIgniter自定义配置文件
2013/06/18 PHP
php app支付宝回调(异步通知)详解
2018/07/25 PHP
Jquery 绑定时间实现代码
2011/05/03 Javascript
原生js ActiveXObject获取execl里面的值
2013/11/01 Javascript
使用JS+plupload直接批量上传图片到又拍云
2014/12/01 Javascript
js如何判断输入字符串长度
2015/12/16 Javascript
jquery中ajax处理跨域的三大方式
2016/01/05 Javascript
剖析Node.js异步编程中的回调与代码设计模式
2016/02/16 Javascript
SpringMVC+bootstrap table实例详解
2017/06/02 Javascript
Vue.js标签页组件使用方法详解
2019/10/19 Javascript
vue.js实现三级菜单效果
2019/10/19 Javascript
浅谈关于vue中scss公用的解决方案
2019/12/02 Javascript
Python程序中的观察者模式结构编写示例
2016/05/27 Python
Python爬取APP下载链接的实现方法
2016/09/30 Python
pandas 实现字典转换成DataFrame的方法
2018/07/04 Python
python中的for循环
2018/09/28 Python
PyCharm设置护眼背景色的方法
2018/10/29 Python
python项目对接钉钉SDK的实现
2019/07/15 Python
Python函数中的可变长参数详解
2019/09/12 Python
python主线程与子线程的结束顺序实例解析
2019/12/17 Python
pytorch梯度剪裁方式
2020/02/04 Python
俄罗斯香水和化妆品购物网站:Л’Этуаль
2018/05/10 全球购物
简单的JAVA编程面试题
2013/03/19 面试题
毕业生幼师求职自荐信
2013/10/01 职场文书
工程造价管理专业大专生求职信
2013/10/06 职场文书
土木工程应届生求职信
2013/10/31 职场文书
《彩色世界》教学反思
2014/04/12 职场文书
先进个人事迹材料范文
2014/12/30 职场文书
村官个人总结范文
2015/03/03 职场文书
道歉的话怎么说
2015/05/12 职场文书
钱学森观后感
2015/06/04 职场文书
巴黎圣母院观后感
2015/06/10 职场文书
阳光体育运动标语口号
2015/12/26 职场文书
python b站视频下载的五种版本
2021/05/27 Python
MySQL数据库必备之条件查询语句
2021/10/15 MySQL
Java由浅入深通关抽象类与接口(下篇)
2022/04/26 Java/Android