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 相关文章推荐
BBS(php & mysql)完整版(一)
Oct 09 PHP
Banner程序
Oct 09 PHP
探讨GDFONTPATH能否被winxp下的php支持
Jun 21 PHP
解析PHP中的内存管理,PHP动态分配和释放内存
Jun 28 PHP
windwos下使用php连接oracle数据库的过程分享
May 26 PHP
php实现session自定义会话处理器的方法
Jan 27 PHP
PHP实现简单的新闻发布系统实例
Jul 28 PHP
php封装的连接Mysql类及用法分析
Dec 10 PHP
Zend Framework框架之Zend_Mail实现发送Email邮件验证功能及解决标题乱码的方法
Mar 21 PHP
PHP jpgraph库的配置及生成统计图表:折线图、柱状图、饼状图
May 15 PHP
PHP判断一个数组是另一个数组子集的方法详解
Jul 31 PHP
PHP文件操作实例总结【文件上传、下载、分页】
Dec 08 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为表单获取的URL 地址预设 http 字符串函数代码
2010/05/26 PHP
memcache命令启动参数中文解释
2014/01/13 PHP
php生成动态验证码gif图片
2015/10/19 PHP
PHP如何将XML转成数组
2016/04/04 PHP
万能的php分页类
2017/07/06 PHP
PHP基于堆栈实现的高级计算器功能示例
2017/09/15 PHP
js 数组操作代码集锦
2009/04/28 Javascript
JS实现Enter键跳转及控件获得焦点
2013/08/12 Javascript
PhotoShop给图片自动添加边框及EXIF信息的JS脚本
2015/02/15 Javascript
angularjs学习笔记之简单介绍
2015/09/26 Javascript
jQuery实现带玻璃流光质感的手风琴特效
2015/11/20 Javascript
JS中call/apply、arguments、undefined/null方法详解
2016/02/15 Javascript
javascript基于原型链的继承及call和apply函数用法分析
2016/12/15 Javascript
详解前端构建工具gulpjs的使用介绍及技巧
2017/01/19 Javascript
JS实现数组去重复值的方法示例
2017/02/18 Javascript
JS对象创建的几种方式整理
2017/02/28 Javascript
jquery一键控制checkbox全选、反选或全不选
2017/10/16 jQuery
Vue2.0 实现单选互斥的方法
2018/04/13 Javascript
解决node修改后需频繁手动重启的问题
2018/05/13 Javascript
微信小程序动态添加view组件的实例代码
2019/05/23 Javascript
基于JavaScript实现留言板功能
2020/03/16 Javascript
vue实现动态给id赋值,点击事件获取当前点击的元素的id操作
2020/11/09 Javascript
在Python的Flask框架中验证注册用户的Email的方法
2015/09/02 Python
PySide和PyQt加载ui文件的两种方法
2019/02/27 Python
nginx黑名单和django限速,最简单的防恶意请求方法分享
2019/08/09 Python
python异步编程 使用yield from过程解析
2019/09/25 Python
numpy中三维数组中加入元素后的位置详解
2019/11/28 Python
HTML实现代码雨源码及效果示例
2020/02/25 HTML / CSS
Peter Millar官网:美国高档生活服饰品牌
2018/07/02 全球购物
ALDO加拿大官网:加拿大女鞋品牌
2018/12/22 全球购物
大三在校生电子商务求职信
2013/10/29 职场文书
实习求职信
2013/12/01 职场文书
个人求职信格式范文
2015/03/20 职场文书
消防演习通知
2015/04/25 职场文书
PhpSpreadsheet中文文档 | Spreadsheet操作教程实例
2021/04/01 PHP
python爬虫之利用selenium模块自动登录CSDN
2021/04/22 Python