PHP重点知识复习 – 高并发和大流量解决方案概述

一、高并发框架相关概念

1.高并发是什么?

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

通常如果一个系统的日PV在千万以上,有可能是一个高并发的系统。

2.高并发的问题,我们具体该关心什么?

QPS:每秒请求或者查询的数量,在互联网领域,指每秒响应请求数(指HTTP请求);

吞吐量:单位时间内处理的请求数量(通常由QPS与并发数决定)

响应时间:从请求发出到收到响应花费的时间。例如系统处理一个HTTP请求需要100ms,这个100ms就是系统的响应时间

PV:综合浏览量(Page View),即页面浏览量或者点击量,一个访客在24小时内访问的页面数量。同一个人浏览网站同一个页面,只记住一次PV。

UV:独立访客(Unique Visitor),即一定时间范围内相同访客多次访问网站,只计算为1个独立访客

带宽:计算带宽大小需关注两个指标,峰值流量和页面的平均大小

日网站带宽 = PV/统计时间(换算到秒) * 平均页面大小(单位KB) * 8

峰值一般是平均值的倍数,根据实际情况来定

QPS 不等于 并发连接数

QPS是每秒HTTP请求数量,并发连接数是系统同时处理的请求数量。

一个并发连接数,可能包含多个HTTP请求。比如一个网页打开时,会同时加载内容、图片、js等等资源,每个加载项都是一次HTTP请求。

(总PV数 * 80%) / (6小时秒数 * 20%) = 峰值每秒请求数(QPS)

80%的访问量集中在 20%的时间

3.压力测试

(1)压力测试

测试能承受的最大并发,测试最大承受的QPS值

常用性能测试工具

ab、wrk、http_load、Web Bench、Siege、Apache JMeter

ab 全称是apache benchmark,是apache官方推出的工具

创建多个并发访问线程,模拟多个访问者同时对某一URL地址进行访问。它的测试目标是基于URL的,因此,它既可以用来测试apache的负载压力,也可以测试nginx、lighthttp、tomcat、IIS等其他Web服务器的压力。

ab的使用

模拟并发请求100次,总共请求5000次

ab -c 100 -n 5000 待测试网站

注意事项

测试机器与被测试机器分开

不要对线上服务做压力测试

观测测试工具ab所在机器,以及被测试的前端机的CPU、内存、网络等都不超过最高限度的75%

一般apache自带ab工具,如果没有,可以通过yum安装

yum -y install httpd-tools

(2)QPS达到极限

随着QPS的增长,每个阶段需要根据实际情况来进行优化,优化的方案也与硬件条件、网络带宽息息相关。

QPS达到50

可以称之为小型网站,一般的服务器就可以应付

QPS 达到 100 

假设关系型数据库的请求在0.01秒完成

假设单页面只有一个SQL查询,那么100QPS意味着1秒完成100次请求,但是此时我们并不能保证数据库查询都完成100次

方案:数据库缓存层、数据库的负载均衡

QPS 达到 800

假设我们使用百兆带宽,意味着网站出口的实际带宽是8M左右

假设每个页面10K,在这个并发条件下,百兆带宽已经吃完

方案:CDN加速、负载均衡

QPS 达到 1000

假设使用Memcache 缓存数据库查询数据,每个页面对 Memcache 的请求远大于直接对 DB 的请求。

Memcache 的悲观并发数在2w左右,但有可能在之前内网带宽已经吃光,表现出不稳定

方案:静态HTML缓存

QPS 达到 2000

这个级别下,文件系统访问锁都成为了灾难

方案:做业务分离,分布式存储

二、高并发解决方案案例

流量优化

防盗链处理

前端优化

减少HTTP请求

添加异步请求

启用浏览器缓存和文件压缩

CDN加速

建立独立图片服务器

服务端优化

页面静态化

并发处理

队列处理

数据库优化

数据库缓存

分库分表、分区操作

读写分离

负载均衡

Web服务器优化

负载均衡

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇