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文件的实现方法
Mar 19 PHP
基于PHP的cURL快速入门教程 (小偷采集程序)
Jun 02 PHP
PHP多个版本的分析解释
Jul 21 PHP
php连接函数implode与分割explode的深入解析
Jun 26 PHP
php 读取文件头判断文件类型的实现代码
Aug 05 PHP
C#使用PHP服务端的Web Service通信实例
Apr 08 PHP
PHP生成二维码的两个方法和实例
Jul 01 PHP
PHP常用字符串操作函数实例总结(trim、nl2br、addcslashes、uudecode、md5等)
Jan 09 PHP
PHP实现的AES加密、解密封装类与用法示例
Aug 02 PHP
PHP两个n位的二进制整数相加问题的解决
Aug 26 PHP
PHP大文件分片上传的实现方法
Oct 28 PHP
不常用但很实用的PHP预定义变量分析
Jun 25 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生成html分页列表的代码
2007/03/18 PHP
php基础学习之变量的使用
2011/06/09 PHP
SESSION信息保存在哪个文件目录下以及能够用来保存什么类型的数据
2012/06/17 PHP
老生常谈PHP 文件写入和读取(必看篇)
2017/05/22 PHP
laravel中数据显示方法(默认值和下拉option默认选中)
2019/10/11 PHP
extjs grid取到数据而不显示的解决
2008/12/29 Javascript
js函数的延迟加载实现代码
2012/10/11 Javascript
javascript加号"+"的二义性说明
2013/03/04 Javascript
js图片向右一张张滚动效果实例代码
2013/11/23 Javascript
JS方法调用括号的问题探讨
2014/01/24 Javascript
jquery实现html页面 div 假分页有原理有代码
2014/09/06 Javascript
bootstrap组件之按钮式下拉菜单小结
2017/01/19 Javascript
JavaScript实现简单图片轮播效果
2017/08/21 Javascript
详解Vue-cli中的静态资源管理(src/assets和static/的区别)
2018/06/19 Javascript
解决Vue axios post请求,后台获取不到数据的问题方法
2018/08/11 Javascript
微信小程序实现随机验证码功能
2018/12/20 Javascript
Vue全局loading及错误提示的思路与实现
2019/08/09 Javascript
JS实现iframe中子父页面跨域通讯的方法分析
2020/03/10 Javascript
[41:20]2014 DOTA2华西杯精英邀请赛 5 24 NewBee VS DK
2014/05/26 DOTA
对于Python编程中一些重用与缩减的建议
2015/04/14 Python
Python中subprocess模块用法实例详解
2015/05/20 Python
Python3使用requests发闪存的方法
2016/05/11 Python
Python变量和数据类型详解
2017/02/15 Python
Python 专题一 函数的基础知识
2017/03/16 Python
python连接mongodb密码认证实例
2018/10/16 Python
python字符串和常用数据结构知识总结
2019/05/21 Python
Python发送邮件的实例代码讲解
2019/10/16 Python
Python dict和defaultdict使用实例解析
2020/03/12 Python
什么是三层交换,说说和路由的区别在那里
2014/09/01 面试题
大学专科生推荐信范文
2013/11/23 职场文书
幼儿园教师国培感言
2014/02/02 职场文书
公益广告语集锦
2014/03/13 职场文书
安全生产演讲稿
2014/05/09 职场文书
违反纪律检讨书范文
2015/05/07 职场文书
《陶罐和铁罐》教学反思
2016/03/03 职场文书
golang中的空接口使用详解
2021/03/30 Python