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 相关文章推荐
3.从实例开始
Oct 09 PHP
让你的网站首页自动选择语言转跳
Dec 06 PHP
php学习 函数 课件
Jun 15 PHP
PHP中删除变量时unset()和null的区别分析
Jan 27 PHP
PHP中CURL的CURLOPT_POSTFIELDS参数使用细节
Mar 17 PHP
你可能不知道PHP get_meta_tags()函数
May 12 PHP
Zend Framework教程之连接数据库并执行增删查的方法(附demo源码下载)
Mar 21 PHP
Netbeans 8.2与PHP相关的新特性介绍
Oct 08 PHP
利用PHP访问MySql数据库的逻辑操作以及增删改查的实例讲解
Aug 30 PHP
php 判断IP为有效IP地址的方法
Jan 28 PHP
PHP实现微信小程序人脸识别刷脸登录功能
May 24 PHP
PHP中使用mpdf 导出PDF文件的实现方法
Oct 22 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启动时候提示PHP startup的解决方法
2013/05/07 PHP
从零开始学YII2框架(三)扩展插件yii2-gird
2014/08/20 PHP
PHP和Mysql中转UTF8编码问题汇总
2015/10/10 PHP
thinkphp3.2实现跨控制器调用其他模块的方法
2017/03/14 PHP
PHP实现文件上传后台处理脚本
2020/03/04 PHP
学习YUI.Ext 第六天--关于树TreePanel(Part 1)
2007/03/10 Javascript
JavaScript实现动态增加文件域表单
2009/02/12 Javascript
Jquery 获取表单text,areatext,radio,checkbox,select值的代码
2009/11/12 Javascript
js实现使用鼠标拖拽切换图片的方法
2015/05/04 Javascript
JavaScript中Function()函数的使用教程
2015/06/04 Javascript
JavaScript提高网站性能优化的建议(二)
2016/07/24 Javascript
JavaScript基于对象去除数组重复项的方法
2016/10/09 Javascript
js通过classname来获取元素的方法
2016/11/24 Javascript
详解angular中如何监控dom渲染完毕
2017/01/03 Javascript
JS判断字符串是否为整数的方法--简单的正则判断
2018/07/23 Javascript
JS/HTML5游戏常用算法之追踪算法实例详解
2018/12/12 Javascript
JavaScript获取页面元素的常用方法详解
2019/09/28 Javascript
ant design实现圈选功能
2019/12/17 Javascript
JavaScript适配器模式原理与用法实例详解
2020/03/09 Javascript
js HTML DOM EventListener功能与用法实例分析
2020/04/27 Javascript
javascript实现页面的实时时钟显示示例
2020/08/06 Javascript
paramiko模块安装和使用(远程登录服务器)
2014/01/27 Python
python显示天气预报
2014/03/02 Python
Python 异常处理实例详解
2014/03/12 Python
python 类对象和实例对象动态添加方法(分享)
2017/12/31 Python
基于python log取对数详解
2018/06/08 Python
Pandas分组与排序的实现
2019/07/23 Python
Django ORM判断查询结果是否为空,判断django中的orm为空实例
2020/07/09 Python
Html5中localStorage存储JSON数据并读取JSON数据的实现方法
2017/02/13 HTML / CSS
HTML5适合的情人节礼物有纪念日期功能
2021/01/25 HTML / CSS
英国皇室御用百货:福南梅森(Fortnum & Mason)
2017/12/03 全球购物
拉斯维加斯酒店、演出、旅游、俱乐部及更多:Vegas.com
2019/02/28 全球购物
建龙钢铁面试总结
2014/04/15 面试题
诉前财产保全担保书
2014/05/20 职场文书
学习十八大的心得体会
2014/09/01 职场文书
详解Python小数据池和代码块缓存机制
2021/04/07 Python