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+java实现自动新闻滚动窗口
Oct 09 PHP
PHP date函数参数详解
Nov 27 PHP
php合并数组array_merge函数运算符加号与的区别
Oct 31 PHP
PHP 利用AJAX获取网页并输出的实现代码(Zjmainstay)
Aug 31 PHP
深入理解php的MySQL连接类
Jun 07 PHP
使用Discuz关键词服务器实现PHP中文分词
Mar 11 PHP
PHP制作3D扇形统计图以及对图片进行缩放操作实例
Oct 23 PHP
thinkphp实现like模糊查询实例
Oct 29 PHP
PHP+Javascript实现在线拍照功能实例
Jul 18 PHP
6个超实用的PHP代码片段
Aug 10 PHP
PHP实现的服务器一致性hash分布算法示例
Aug 09 PHP
phpQuery采集网页实现代码实例
Apr 02 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
咖啡冲泡指南 咖啡有哪些制作方式 单品咖啡 意式咖啡
2021/03/06 冲泡冲煮
使用PHP模拟HTTP认证
2006/10/09 PHP
PHP以及MYSQL日期比较方法
2012/11/29 PHP
php比较两个绝对时间的大小
2014/01/31 PHP
PHP使用星号隐藏用户名,手机和邮箱的实现方法
2016/09/22 PHP
Zend Framework框架中实现Ajax的方法示例
2017/06/27 PHP
Windows平台实现PHP连接SQL Server2008的方法
2017/07/26 PHP
jQuery Tools tab(幻灯片)
2012/07/14 Javascript
页面只能打开一次Cooike如何实现
2012/12/04 Javascript
jQuery使用元素属性attr赋值详解
2015/02/27 Javascript
javascript实现图片轮播效果
2016/01/20 Javascript
js一维数组、多维数组和对象的混合使用方法
2016/04/03 Javascript
浅谈js构造函数的方法与原型prototype
2016/07/04 Javascript
bootstrap table实例详解
2017/01/06 Javascript
利用Plupload.js解决大文件上传问题, 带进度条和背景遮罩层
2017/03/15 Javascript
jquery中each循环的简单回滚操作
2017/05/05 jQuery
JavaScript使用readAsDataURL读取图像文件
2017/05/10 Javascript
基于Vue的延迟加载插件vue-view-lazy
2018/05/21 Javascript
VSCode搭建React Native环境
2020/05/07 Javascript
jQuery实现购物车全功能
2021/01/11 jQuery
详解Python中的join()函数的用法
2015/04/07 Python
浅谈python requests 的put, post 请求参数的问题
2019/01/02 Python
PyQt QCombobox设置行高的方法
2019/06/20 Python
Python笔记之代理模式
2019/11/20 Python
利用Tensorflow构建和训练自己的CNN来做简单的验证码识别方式
2020/01/20 Python
Django contrib auth authenticate函数源码解析
2020/11/12 Python
巧用CSS3 border实现图片遮罩效果代码
2012/04/09 HTML / CSS
飞利信loadrunner和软件测试笔试题
2012/09/22 面试题
学前教育毕业生自荐信
2013/10/29 职场文书
大学旷课检讨书
2014/01/28 职场文书
装饰公司活动策划方案
2014/08/23 职场文书
部队反四风对照检查材料
2014/09/26 职场文书
民主评议党员自我鉴定
2014/10/21 职场文书
人事专员岗位职责
2015/02/03 职场文书
vue使用Google Recaptcha验证的实现示例
2021/08/23 Vue.js
详细介绍MySQL中limit和offset的用法
2022/05/06 MySQL