基础篇

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

高并发架构相关概念

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

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

高并发:通常如果一个日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服务器优化

负载均衡

转:基础篇|PHP如何解决网站大流量和高并发的更多相关文章

  1. PHP解决网站大流量与高并发

    1:硬件方面 普通的一个p4的服务器每天最多能支持大约10万左右的IP,如果访问量超过10W那么需要专用的服务器才能解决,如果硬件不给力 软件怎么优化都是于事无补的.主要影响服务器的速度 有:网络-硬 ...

  2. PHP如何解决网站大流量与高并发的问题(一)

    高并发的相关概念 在某个时间点,有多少个访问量 如果一个系统的日PV在千万以上,有可能是一个高并发的系统 QPS: 每秒钟请求或者查询的数量,在互联网领域,指每秒相应请求数(指HTTP请求) 吞吐量: ...

  3. PHP如何解决网站大流量与高并发的问题(二)

    转载:https://zhyunfe.github.io/2017/10/02/php-interview-prepare-hc-2/ 数据库缓存 相关概念 什么是数据库缓存? 为什么使用缓存 使用M ...

  4. PHP如何解决网站大流量与高并发的问题(四)

    动态语言的并发处理 相关概念 什么是进程.线程.协程 什么是多进程.多线程 同步阻塞模型 异步非阻塞模型 php并发编程实践 什么是进程.线程.协程 进程 进程是一个执行中的程序 进程的三态模型:多道 ...

  5. PHP如何解决网站大流量与高并发的问题

    首先,确认服务器硬件是否足够支持当前的流量. 普通的P4服务器一般最多能支持每天10万独立IP,如果访问量比这个还要大, 那么必须首先配置一台更高性能的专用服务器才能解决问题 ,否则怎么优化都不可能彻 ...

  6. PHP如何解决网站大流量与高并发的…

    首先,确认服务器硬件是否足够支持当前的流量. 普通的P4服务器一般最多能支持每天10万独立IP,如果访问量比这个还要大, 那么必须首先配置一台更高性能的专用服务器才能解决问题 ,否则怎么优化都不可能彻 ...

  7. PHP如何解决网站大流量与高并发的问题(三)

    七层负载均衡的实现 基于URL等应用层信息的负载均衡 Nginx的proxy是一个很强大的功能,实现了7层负载均衡 功能强大.性能卓越,运行稳定 配置简单灵活 能自动提出工作不正常的后端服务器 上传文 ...

  8. PHP 网站大流量与高并发的解决方法

    php 网站如何应对大流量与高并发呢? 首先,确认服务器硬件是否足够支持当前的流量. 普通的P4服务器一般最多能支持每天10万地理IP,如果访问量比这个还要大,则请配置一台更高性能的专用服务器. 否则 ...

  9. 如何解决web大流量,高并发问题

    对于当今大流量的网站,每天几千万甚至上亿的流量,是如何解决访问量问题的呢? 以下是一些总结的方法:  第一,确认服务器硬件是否足够支持当前的流量.  普通的P4服务器一般最多能支持每天10万独立IP, ...

随机推荐

  1. 创建HTML5/CSS3单页Web布局

    1. [图片] 第1步:PhotoShop ​2. [代码]第2步:index.html <!DOCTYPE html><!-- The new doctype -->< ...

  2. css 盒子模型 以及 box-sizing属性

    在标准的盒子模型下,css中 width,padding以及border的关系 关于css中的width和padding以及border的关系. 在css中,width和height指的是内容区域的宽 ...

  3. Sed 命令详解 正则表达式元字符

    1.简介 sed是非交互式的编辑器.它不会修改文件,除非使用shell重定向来保存结果.默认情况下,所有的输出行都被打印到屏幕上. sed编辑器逐行处理文件(或输入),并将结果发送到屏幕.具体过程如下 ...

  4. Linux-Rsync命令参数详解

    在对rsync服务器配置结束以后,下一步就需要在客户端发出rsync命令来实现将服务器端的文件备份到客户端来.rsync是一个功能非常强大的工具,其命令也有很多功能特色选项,我们下面就对它的选项一一进 ...

  5. linux命令学习笔记( 7 ) : mv 命令

    mv命令是move的缩写,可以用来移动文件或者将文件改名(move (rename) files),是Linux系统下常用的命令, 经常用来备份文件或者目录. .命令格式: mv [选项] 源文件或目 ...

  6. tbody scroll

    http://jsfiddle.net/hashem/CrSpu/555/

  7. 在YUV图像上根据背景色实现OSD反色

    所谓的OSD其实就是在视频图像上叠加一些字符信息,比如时间,地点,通道号等, 在图像上叠加OSD通常有两种方式: 一种是在前端嵌入式设备上,在图像数据上叠加OSD, 这样客户端这边只需解码显示数据即可 ...

  8. Arc066_E Addition and Subtraction Hard

    传送门 题目大意 给定一个加减法的表达式,让你任意的添加合法的括号对,使的表达式最大. 题解 考虑到任意左括号一定加在减号右边,那么对于第一个左括号,与该左括号相邻的只含有加号的子序列的贡献一定为负, ...

  9. HihoCoder1664 01间隔方阵([Offer收割]编程练习赛40)(DP)

    给定一个NxM的01矩阵,小Hi希望从中找到一个01间隔的子方阵,并且方阵的边长越大越好. 例如对于 0100100 1000101 0101010 1010101 0101010 在右下角有一个4x ...

  10. BZOJ1217:[HNOI2003]消防局的设立

    我对贪心的理解:https://www.cnblogs.com/AKMer/p/9776293.html 题目传送门:https://www.lydsy.com/JudgeOnline/problem ...