PHP高并发和大流量解决方案整理


Posted in PHP onDecember 24, 2019

一、高并发的概念

在互联网时代,并发,高并发通常是指并发访问。也就是在某个时间点,有多少个访问同时到来。

二、高并发架构相关概念

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 相关文章推荐
一个php作的文本留言本的例子(六)
Oct 09 PHP
海河写的 Discuz论坛帖子调用js的php代码
Aug 23 PHP
phpmyadmin MySQL 加密配置方法
Jul 05 PHP
PHP自动选择 连接本地还是远程数据库
Dec 02 PHP
PHP转换文件夹下所有文件编码的实现代码
Jun 06 PHP
PHP 关于访问控制的和运算符优先级介绍
Jul 08 PHP
php读取csc文件并输出
May 21 PHP
完美解决thinkphp唯一索引重复时出错的问题
Mar 31 PHP
php 删除指定文件夹的实例讲解
Jul 25 PHP
php制作圆形用户头像的实例_自定义封装类源代码
Sep 18 PHP
PHP的mysqli_rollback()函数讲解
Jan 23 PHP
ThinkPHP 5.1 跨域配置方法
Oct 11 PHP
thinkphp5实现微信扫码支付
Dec 23 #PHP
PHP实现笛卡尔积算法的实例讲解
Dec 22 #PHP
PHP架构及原理知识点详解
Dec 22 #PHP
Laravel 验证码认证学习记录小结
Dec 20 #PHP
php文件上传原理与实现方法详解
Dec 20 #PHP
PHP使用PDO实现mysql防注入功能详解
Dec 20 #PHP
laravel框架数据库操作、查询构建器、Eloquent ORM操作实例分析
Dec 20 #PHP
You might like
在线竞拍系统的PHP实现框架(一)
2006/10/09 PHP
信用卡效验程序
2006/10/09 PHP
PHP SQLite类
2009/05/07 PHP
php把数据表导出为Excel表的最简单、最快的方法(不用插件)
2014/05/10 PHP
本地计算机无法启动Apache故障处理
2014/08/08 PHP
推荐一款PHP+jQuery制作的列表分页的功能模块
2014/10/14 PHP
php中实现xml与mysql数据相互转换的方法
2014/12/25 PHP
php抽象类使用要点与注意事项分析
2015/02/09 PHP
使用symfony命令创建项目的方法
2016/03/17 PHP
PHP常见的6个错误提示及解决方法
2016/07/07 PHP
javascript Split方法,indexOf方法、lastIndexOf 方法和substring 方法
2009/03/21 Javascript
推荐20家国外的脚本下载网站
2011/04/28 Javascript
JS注册/移除事件处理程序(ExtJS应用程序设计实战)
2013/05/07 Javascript
jquery实现在光标位置插入内容的方法
2015/02/05 Javascript
jQuery仿淘宝网产品品牌隐藏与显示效果
2015/09/01 Javascript
Eclipse编辑jsp、js文件时卡死现象的解决办法汇总
2016/02/02 Javascript
jquery 判断selection range 是否在容器中的简单实例
2016/08/02 Javascript
js replace(a,b)之替换字符串中所有指定字符的方法
2016/08/17 Javascript
JS关闭窗口时产生的事件及用法示例
2016/08/20 Javascript
javascript获取以及设置光标位置
2017/02/16 Javascript
angular.JS实现网页禁用调试、复制和剪切
2017/03/31 Javascript
JavaScript实现的贝塞尔曲线算法简单示例
2018/01/30 Javascript
使用百度地图实现地图网格的示例
2018/02/06 Javascript
对vue.js中this.$emit的深入理解
2018/02/23 Javascript
Vue2.0系列之过滤器的使用
2018/03/01 Javascript
ES6中Promise的使用方法实例总结
2020/02/18 Javascript
JS代码简洁方式之函数方法详解
2020/07/28 Javascript
python中Apriori算法实现讲解
2017/12/10 Python
Python爬虫爬取新浪微博内容示例【基于代理IP】
2018/08/03 Python
详解Numpy中的数组拼接、合并操作(concatenate, append, stack, hstack, vstack, r_, c_等)
2019/05/27 Python
Python之虚拟环境virtualenv,pipreqs生成项目依赖第三方包的方法
2019/07/23 Python
Python实现扫码工具的示例代码
2020/10/09 Python
定义一结构体数组表示分数,并求两个分数相加之和
2013/06/11 面试题
商场圣诞节活动总结
2015/05/06 职场文书
2016秋季幼儿园开学寄语
2015/12/03 职场文书
压缩Redis里的字符串大对象操作
2021/06/23 Redis