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 相关文章推荐
ftp类(example.php)
Oct 09 PHP
让PHP COOKIE立即生效,不用刷新就可以使用
Mar 09 PHP
php异常处理技术,顶级异常处理器
Jun 13 PHP
php中用socket模拟http中post或者get提交数据的示例代码
Aug 08 PHP
php多用户读写文件冲突的解决办法
Nov 06 PHP
ThinkPHP模板IF标签用法详解
Jul 01 PHP
php解析url并得到url中的参数及获取url参数的四种方式
Oct 26 PHP
thinkphp3.x连接mysql数据库的方法(具体操作步骤)
May 19 PHP
PHP性能优化大全(php.ini)
May 20 PHP
PHP构造函数与析构函数用法示例
Sep 28 PHP
yii2简单使用less代替css示例
Mar 10 PHP
PHP Class SoapClient not found解决方法
Jan 20 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 获取时间今天明天昨天时间戳的详解
2013/06/20 PHP
使用php实现截取指定长度
2013/08/06 PHP
PHP读取Excel类文件
2017/05/15 PHP
关于Mozilla浏览器不支持innerText的解决办法
2011/01/01 Javascript
javascript监听鼠标滚轮事件浅析
2014/06/05 Javascript
JQuery中的html()、text()、val()区别示例介绍
2014/09/01 Javascript
分享网页检测摇一摇实例代码
2016/01/14 Javascript
JS简单编号生成器实现方法(附demo源码下载)
2016/04/05 Javascript
Javascript 高性能之递归,迭代,查表法详解及实例
2017/01/08 Javascript
移动端Ionic App 资讯上下循环滚动的实现代码(跑马灯效果)
2017/08/29 Javascript
vue实现在线预览pdf文件和下载(pdf.js)
2019/11/26 Javascript
python使用urllib2提交http post请求的方法
2015/05/26 Python
Django实现组合搜索的方法示例
2018/01/23 Python
Tensorflow之梯度裁剪的实现示例
2020/03/08 Python
Python调用.net动态库实现过程解析
2020/06/05 Python
python 指定源路径来解决import问题的操作
2021/03/04 Python
中东地区最大的奢侈品市场:The Luxury Closet
2019/04/09 全球购物
美国杰西潘尼官网:JCPenney
2019/06/12 全球购物
Java 中访问数据库的步骤?Statement 和PreparedStatement 之间的区别?
2012/06/05 面试题
某/etc/fstab文件中的某行如下: /dev/had5 /mnt/dosdata msdos defaults,usrquota 1 2 请解释其含义
2013/04/11 面试题
如何将一个描述日期或日期/时间的字符串转换为一个Date对象
2015/10/13 面试题
高级电工工作职责
2013/11/21 职场文书
《春到梅花山》教学反思
2014/04/16 职场文书
理发店策划方案
2014/06/05 职场文书
学雷锋标兵事迹材料
2014/08/18 职场文书
社区文艺活动方案
2014/08/19 职场文书
教师节学生演讲稿
2014/09/03 职场文书
局机关干部群众路线个人对照检查材料思想汇报
2014/10/05 职场文书
2014年基层党建工作总结
2014/11/11 职场文书
2014年档案管理工作总结
2014/11/17 职场文书
新婚姻法离婚协议书范文
2014/11/30 职场文书
初三英语教学计划
2015/01/23 职场文书
社区节水倡议书
2015/04/29 职场文书
诚信考试主题班会
2015/08/17 职场文书
中学教代会开幕词
2016/03/04 职场文书
2016年社区文体活动总结
2016/04/06 职场文书