基础篇|PHP如何解决网站大流量和高并发

原文链接:https://chensenlin.cn/posts/16446/

基础篇

高并发架构基础概念和优化思路

高并发架构相关概念

并发,在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行,但任一个时刻点上只有一个程序在处理机上运行

通常我们所定义的高并发并非上述解释,简单的来说就是在某个时间点、有多少个访问同时到来

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

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

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

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

PV:综合浏览量(Page View),即页面浏览量或者点击量,一个访客在24小时内访问的页面数量

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

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

日网站带宽 = PV / 统计时间(秒)x 平均页面大小(KB) x 8

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

QPS VS 并发连接数

QPS 不等于并发连接数

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

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

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

压力测试

目的:测试能承受的最大并发 和 测试最大承受的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 待测试网站

注意事项

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

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

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

QPS 达到极限的解决方案

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

QPS达到50

基本不需要优化。

QPS 达到 100

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

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

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

QPS 达到 800

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

假设每个页面只有 10 K,在这个并发条件下,百兆带宽已经吃完方案:CDN 加速、负载均衡

QPS 达到 1000

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

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

方案:静态 HTML 缓存

QPS 达到 2000

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

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

高并发解决方案案例

流量优化

防盗链处理

前端优化

减少HTTP请求;例如合并CSS js,图片

添加异步请求;延迟加载暂时不需要的内容

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

CDN加速;

建立独立的图片服务器;

服务端优化

页面静态化;并发处理;队列处理

数据库优化

数据库缓存;分库分表、分区操作;读写分离;负载均衡

Web服务器优化

负载均衡

本文的学习笔记来自于在imooc学习。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏IMWeb前端团队

浅谈前端模块化

模块化编程 CommonJS AMD(Asynchronous Module Definition)规范 requireJS与seaJS requireJs ...

23810
来自专栏Timhbw博客

iOS学习巩固笔记-Socket

2016-05-0922:18:41 发表评论 665℃热度 下面是一些个人学习笔记,查缺补漏,巩固知识,希望大家能有所收获。 ? Socket又称"套接字”...

2968
来自专栏匠心独运的博客

分布式事务 ( DTS ) 你必须知道的事儿

目前云计算、大数据、互联网领域的大部分系统都采用了SOA、微服务化的架构。一个涉及端到端全链路的业务操作往往会由多个服务和数据库实例共同完成。因此,在一致性要求...

1492
来自专栏即时通讯技术

开源轻量级IM框架MobileIMSDK v3.0发布!

本次更新为主版本更新,更新内容包含了简化了消息发送目标的方式、支持Web版与APP版互通、优化了Protocal协议结构等主要升级,详细更新内容见“版本更新说明...

2851
来自专栏信安之路

Splunk学习与实践

美国Splunk公司,成立于2004年,2012年纳斯达克上市,第一家大数据上市公司,荣获众多奖项和殊荣。总部位于美国旧金山,伦敦为国际总部,香港设有亚太支持中...

3180
来自专栏大闲人柴毛毛

常用的分布式事务解决方案

众所周知,数据库能实现本地事务,也就是在同一个数据库中,你可以允许一组操作要么全都正确执行,要么全都不执行。这里特别强调了本地事务,也就是目前的数据库只能支持...

3.6K11
来自专栏潇涧技术专栏

Tiny Weibo

Android Studio 1.0终于是盼来了!强大的微微博客户端终于又可以运行啦!微微博依旧是开源的!

1282
来自专栏Java架构师进阶

java架构师之用Redis轻松实现秒杀系统

曾经被问过好多次怎样实现秒杀系统的问题。昨天又在CSDN架构师微信群被问到了。因此这里把我设想的实现秒杀系统的价格设计分享出来。供大家参考。

1K2
来自专栏小尘哥的专栏

UEditor导致的上传大文件失败

项目中用到视频上传,两种上传方式,一种直接表单提交,一种内嵌到UEditor中提交,视频文件上传到第三方视频点播服务器,此为前提。

6502
来自专栏腾讯DevOps

【干货】Git入门

想删除一个段落,又怕将来想恢复找不回来怎么办?有办法,先把当前文件“另存为……”一个新的Word文件,再接着改,改到一定程度,再“另存为……”一个新文件,这样一...

2626

扫码关注云+社区

领取腾讯云代金券