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函数
Dec 06 PHP
php与php MySQL 之间的关系
Jul 17 PHP
PHP 多维数组排序(usort,uasort)
Jun 30 PHP
PHP投票系统防刷票判断流程分析
Feb 04 PHP
用PHP读取超大文件的实例代码
Apr 01 PHP
UCenter 批量添加用户的php代码
Jul 17 PHP
PHP手机号码归属地查询代码(API接口/mysql)
Sep 04 PHP
php笔记之:初探PHPcms模块开发介绍
Apr 26 PHP
PHP中is_file()函数使用指南
May 08 PHP
php的mail函数发送UTF-8编码中文邮件时标题乱码的解决办法
Oct 20 PHP
laravel5.4利用163邮箱发送邮件的步骤详解
Sep 22 PHP
Nginx+php配置文件及原理解析
Dec 09 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生成静态页面详解
2006/12/05 PHP
PHP var_dump遍历对象属性的函数与应用代码
2010/06/04 PHP
ThinkPHP基本的增删查改操作实例教程
2014/08/22 PHP
高质量PHP代码的50个实用技巧必备(下)
2016/01/22 PHP
ThinkPHP中Common/common.php文件常用函数功能分析
2016/05/20 PHP
Javascript 判断函数类型完美解决方案
2009/09/02 Javascript
JqGrid web打印实现代码
2011/05/31 Javascript
浅析jQuery事件之on()方法绑定多个选择器,多个事件
2016/04/27 Javascript
JavaScript直播评论发弹幕切图功能点集合效果代码
2016/06/26 Javascript
knockoutjs动态加载外部的file作为component中的template数据源的实现方法
2016/09/01 Javascript
AngularJs concepts详解及示例代码
2016/09/01 Javascript
AJAX和jQuery动态加载数据的实现方法
2016/12/05 Javascript
Bootstrap实现各种进度条样式详解
2017/04/13 Javascript
jQuery实现表格冻结顶栏效果
2017/08/20 jQuery
通过jquery的ajax请求本地的json文件方法
2018/08/08 jQuery
django使用channels2.x实现实时通讯
2018/11/28 Javascript
vue中使用mxgraph的方法实例代码详解
2019/05/17 Javascript
如何优雅地在Node应用中进行错误异常处理
2019/11/25 Javascript
微信小程序indexOf的替换方法(推荐)
2020/01/14 Javascript
jquery实现点击左右按钮切换图片
2021/01/27 jQuery
python 测试实现方法
2008/12/24 Python
Python随机数用法实例详解【基于random模块】
2017/04/18 Python
numpy排序与集合运算用法示例
2017/12/15 Python
python 画二维、三维点之间的线段实现方法
2019/07/07 Python
Python寻找路径和查找文件路径的示例
2019/07/10 Python
python对XML文件的操作实现代码
2020/03/27 Python
Django xadmin安装及使用详解
2020/10/26 Python
英国著名音像制品和图书游戏购物网站:Zavvi
2016/08/04 全球购物
英国异国风情旅游网站:Travel Talk Tours(团体旅游、探险旅游、帆船假期)
2018/07/26 全球购物
linux下进程间通信的方式
2013/01/23 面试题
中专生自我鉴定书范文
2013/12/28 职场文书
商务会议邀请函
2014/01/09 职场文书
黄河象教学反思
2014/02/10 职场文书
机关节能减排实施方案
2014/03/17 职场文书
《水上飞机》教学反思
2014/04/10 职场文书
swagger如何返回map字段注释
2021/07/03 Java/Android