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 相关文章推荐
Zend 输出产生XML解析错误
Mar 03 PHP
PHP中删除变量时unset()和null的区别分析
Jan 27 PHP
奇怪的PHP引用效率问题分析
Mar 23 PHP
基于PHP读取csv文件内容的详解
Jun 18 PHP
慎用preg_replace危险的/e修饰符(一句话后门常用)
Jun 19 PHP
浅析php与数据库代码开发规范
Aug 08 PHP
php使用pack处理二进制文件的方法
Jul 03 PHP
PHP callback函数使用方法和注意事项
Jan 23 PHP
详解PHP swoole process的使用方法
Aug 26 PHP
php中file_get_contents()函数用法实例
Feb 21 PHP
Laravel实现通过blade模板引擎渲染视图
Oct 25 PHP
tp5.1 框架数据库-数据集操作实例分析
May 26 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获取英文姓名首字母的方法
2015/07/13 PHP
PHP实现获取文件后缀名的几种常用方法
2015/08/08 PHP
PHP下载远程图片并保存到本地方法总结
2016/01/22 PHP
PHP 搜索查询功能实现
2016/11/29 PHP
Laravel学习教程之View模块详解
2017/09/18 PHP
Javascript 类与静态类的实现(续)
2010/04/02 Javascript
jquery中ajax学习笔记3
2011/10/16 Javascript
用js实现输入提示(自动完成)的实例代码
2013/06/14 Javascript
浅析showModalDialog数据缓存问题(用禁止浏览器缓存解决)
2013/07/09 Javascript
js实现浏览器的各种菜单命令比如打印、查看源文件等等
2013/10/24 Javascript
javascript修改表格背景色实例代码分享
2013/12/10 Javascript
JavaScript中的变量作用域介绍
2014/12/31 Javascript
JavaScript中的方法重载实例
2015/03/16 Javascript
js实现ctrl+v粘贴上传图片(兼容chrome、firefox、ie11)
2016/03/09 Javascript
浅谈JavaScript的计时器对象
2016/12/26 Javascript
原生JS实现几个常用DOM操作API实例
2017/01/19 Javascript
详谈$.data()的用法和作用
2017/02/13 Javascript
javascript滚轮事件基础实例讲解(37)
2017/02/14 Javascript
JavaScript之Map和Set_动力节点Java学院整理
2017/06/29 Javascript
小程序怎样让wx.navigateBack更好用的方法实现
2019/11/01 Javascript
Vue 打包体积优化方案小结
2020/05/20 Javascript
Python类方法__init__和__del__构造、析构过程分析
2015/03/06 Python
Python获取某一天是星期几的方法示例
2017/01/17 Python
Python实现将Excel转换为json的方法示例
2017/08/05 Python
python学习笔记--将python源文件打包成exe文件(pyinstaller)
2018/05/26 Python
Python PyAutoGUI模块控制鼠标和键盘实现自动化任务详解
2018/09/04 Python
Python3模拟curl发送post请求操作示例
2019/05/03 Python
css3实现画半圆弧线的示例代码
2017/11/06 HTML / CSS
英国舒适型鞋履品牌:FitFlop
2017/05/17 全球购物
可靠的数据流传输TCP
2016/03/15 面试题
大学生创业感言
2014/01/25 职场文书
群众路线查摆问题及整改措施
2014/10/10 职场文书
赵乐秦在党的群众路线教育实践活动总结大会上的讲话稿
2014/10/25 职场文书
2014年学校安全工作总结
2014/11/13 职场文书
2019入党申请书格式和范文
2019/06/25 职场文书
浅谈@Value和@Bean的执行顺序问题
2021/06/16 Java/Android