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脚本的10个技巧(5)
Oct 09 PHP
PHP新手上路(九)
Oct 09 PHP
mysql_fetch_assoc和mysql_fetch_row的功能加起来就是mysql_fetch_array
Jan 15 PHP
PHP 数组入门教程小结
May 20 PHP
ubuntu 编译安装php 5.3.3+memcache的方法
Aug 05 PHP
PHP求小于1000的所有水仙花数的代码
Jan 10 PHP
php stripslashes和addslashes的区别
Feb 03 PHP
php实现文件编码批量转换
Mar 10 PHP
Destoon实现多表查询示例
Aug 21 PHP
ThinkPHP实现支付宝接口功能实例
Dec 02 PHP
php实现插入数组但不影响原有顺序的方法
Mar 27 PHP
php 在字符串指定位置插入新字符的简单实现
Jun 28 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
destoon调用自定义模板及样式的公告栏
2014/06/21 PHP
php实现mysql备份恢复分卷处理的方法
2014/12/26 PHP
php使用Jpgraph绘制3D饼状图的方法
2015/06/10 PHP
thinkPHP5 ACL用户权限模块用法详解
2017/05/10 PHP
PHP实现找出有序数组中绝对值最小的数算法分析
2017/08/07 PHP
laravel-admin 在列表页添加自定义按钮的例子
2019/09/30 PHP
jquery 选择器部分整理
2009/10/28 Javascript
js getElementsByTagName的简写方式
2010/06/27 Javascript
Js event事件在IE、FF兼容性问题
2011/01/01 Javascript
js实现简单的星级选择器提交效果适用于评论等
2013/10/18 Javascript
js函数返回多个返回值的示例代码
2013/11/05 Javascript
JS动态添加与删除select中的Option对象(示例代码)
2013/12/20 Javascript
最流行的Node.js精简型和全栈型开发框架介绍
2015/02/26 Javascript
JavaScript实现自动弹出窗口并自动关闭窗口的方法
2015/08/06 Javascript
关于JS中prototype的理解
2015/09/07 Javascript
JavaScript中访问id对象 属性的方式访问属性(实例代码)
2016/10/28 Javascript
javascript设计模式之单体模式学习笔记
2017/02/15 Javascript
详解vue项目构建与实战
2017/06/27 Javascript
JS实现的找零张数最小问题示例
2017/11/28 Javascript
JS基于for语句编写的九九乘法表示例
2018/01/04 Javascript
小程序云开发如何实现图片上传及发表文字
2019/05/17 Javascript
layui动态加载多表头的实例
2019/09/05 Javascript
layui实现图片虚拟路径上传,预览和删除的例子
2019/09/25 Javascript
js实现轮播图效果 纯js实现图片自动切换
2020/08/09 Javascript
基于ajax实现上传图片代码示例解析
2020/12/03 Javascript
[41:54]2018DOTA2亚洲邀请赛 4.1 小组赛A组加赛 TNC vs Liquid
2018/04/03 DOTA
使用Python3+PyQT5+Pyserial 实现简单的串口工具方法
2019/02/13 Python
Python 使用 Pillow 模块给图片添加文字水印的方法
2019/08/30 Python
Django vue前后端分离整合过程解析
2020/11/20 Python
css3与html5实现响应式导航菜单(导航栏)效果分享
2014/02/12 HTML / CSS
html5实现多图片预览上传及点击可拖拽控件
2018/03/15 HTML / CSS
努比亚手机官网:nubia
2016/10/06 全球购物
几个Linux面试题笔试题
2016/08/01 面试题
如何用Java判断一个文件或目录是否存在
2012/11/19 面试题
幼儿园大班区域活动总结
2014/07/09 职场文书
2015年扶贫帮困工作总结
2015/05/20 职场文书