博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
高并发大流量专题---1、高并发大流量解决方案总结
阅读量:5858 次
发布时间:2019-06-19

本文共 4963 字,大约阅读时间需要 16 分钟。

高并发大流量专题---1、高并发大流量解决方案总结

一、总结

一句话总结:

可以根据 前后端数据库顺序 及 QPS数量来 决定优化方法

 

1、PHP如何解决网站大流量与高并发的问题?

流量优化+前端优化:比如防盗链处理、减少HTTP请求、添加异步请求、CDN加速、建立独立图片服务器、启用浏览器缓存和文件压缩等等
服务端优化+Web服务器优化:比如页面静态化、并发处理、队列处理、负载均衡等等
数据库优化:比如数据库缓存、分库分表、分区操作、读写分离、负载均衡等等

 

2、我们说的高并发是什么?

不是操作系统中的并发:在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行,但任一个时刻点上只有一个程序在处理机上运行。
某个时间点的并发访问量:上面的定义明显不是我们通常所言的并发,在互联网时代,所讲的并发、高并发,通常是指并发访问。也就是在某个时间点,有多少个访问同时到来。
日PV在干万以上:通常如果一个系统的日PV在干万以上,有可能是一个高并发的系统

 

3、高并发解决方案?

技术:各种优化、缓存、负载均衡等技术
机器堆:有的公司完全不走技术路线,全靠机器堆,有钱,任性

 

4、高并发的问题中,需要了解的一些名词?

qps、吞吐量、响应时间、pv、uv、带宽、日网站带宽、峰值

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

吞吐量:单位时间内处理的请求数量(通常由QPS与并发数决定)
响应时间:从请求发出到收到响应花费的时间。例如系统处理一个HTTP请求需要100ms,这个100ms就是系统的响应时间
PV:综合浏览量(Page View),即页面浏览量或者点击量,一个访客在24小时内访问的页面数量;同一个人浏览你的网站同一页面,只记作一次PV
UV:独立访客(UniQue Visitor),即一定时间范围内相同访客多次访问网站,只计算为1个独立访客
带宽:计算带宽大小需关注两个指标,峰值流量和页面的平均大小
日网站带宽=PV/统计时间(换算到秒)*平均页面大小(单位KB)*8
峰值一般是平均值的倍数,根据实际情况来定
峰值每秒请求数(QPS)=(总PV数*80%)/(6小时秒数*20%)

 

5、日网站带宽如何计算?

带宽:计算带宽大小需关注两个指标,峰值流量和页面的平均大小
日网站带宽=PV/统计时间(换算到秒)*平均页面大小(单位KB)*8

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

 

6、QPS 等于并发连接数 么?

不等于:QPS是每秒HTTP请求数量,并发连接数是系统同时处理的请求数:一个连接里面可能有多个http请求

 

7、峰值每秒请求数(QPS) 如何计算?

峰值每秒请求数(QPS)=(总PV数*80%)/(6小时秒数*20%)
80%的访问量集中在20%的时间

 

8、压力测试是什么?

最大并发:测试服务器集群(或单台)能承受的最大并发
QPS值:测试服务器集群(或单台)最大承受的QPS值

一般了解单台服务器能够承受的QPS是多少

 

9、常用性能测试工具?

ab、wrk.http load、Web Bench、Siege、Apache JMeter
ab:全称是apache benchmark,是apache官方推出的工具
ab原理:创建多个并发访问线程,模拟多个访问者同时对某一URL地址进行访问。它的测试目标是基于URL的,因此,它既可以用来测试apache的负载压力,也可以测试nginx、lighthttp、tomcat、IIS等其它Web服务器的压力。

 

10、ab(apache benchmark)是apache官方推出的工具,那么它能够测试nginx么?

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

 

 

11、ab的使用(比如 模拟并发请求100次,总共请求5000次)?

运行ab命令:ab -c 100 -n 5000 待测试网站

 

12、ab测试注意事项?

测试机器与被测试机器分开
不要对线上服务做压力测试
不超过最高限度的75%:观察测试工具ab所在机器,以及被测试的前端机的CPU,内存,网络等都不超过最高限度的75%

 

13、如何安装使用ab测试?

独立安装:yum -y install httpd-tools
一般安装apache会自动安装ab
ab使用:ab -c 100 -n 5000 http://192.168.52.6/index
[root@localhost ~]# ab -c 100 -n 5000 http://192.168.52.6/indexThis is ApacheBench, Version 2.3 <$Revision: 1430300 $>Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/Licensed to The Apache Software Foundation, http://www.apache.org/Benchmarking 192.168.52.6 (be patient)Completed 500 requestsCompleted 1000 requestsCompleted 1500 requestsCompleted 2000 requestsCompleted 2500 requestsCompleted 3000 requestsCompleted 3500 requestsCompleted 4000 requestsCompleted 4500 requestsCompleted 5000 requestsFinished 5000 requestsServer Software:        ApacheServer Hostname:        192.168.52.6Server Port:            80Document Path:          /indexDocument Length:        1917 bytesConcurrency Level:      100Time taken for tests:   22.049 secondsComplete requests:      5000Failed requests:        3   (Connect: 0, Receive: 0, Length: 3, Exceptions: 0)Write errors:           0Total transferred:      11438133 bytesHTML transferred:       9579249 bytesRequests per second:    226.77 [#/sec] (mean)Time per request:       440.972 [ms] (mean)Time per request:       4.410 [ms] (mean, across all concurrent requests)Transfer rate:          506.61 [Kbytes/sec] receivedConnection Times (ms)              min  mean[+/-sd] median   maxConnect:        0    1   9.0      0     125Processing:     1  419 1614.8     68   17425Waiting:        0  412 1601.8     68   17425Total:          1  420 1614.8     72   17427Percentage of the requests served within a certain time (ms)  50%     72  66%    125  75%    163  80%    193  90%    399  95%    987  98%   7019  99%   9085 100%  17427 (longest request)

 

 

14、不同QPS下,优化与哪些方面有关?

硬件条件
网络带宽

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

 

15、不同QPS下的优化方案?

QPS100:数据库缓存层、数据库的负载均衡
QPS800:CDN加速、负载均衡
QPS1000:静态HTML缓存
QPS2000:做业务分离,分布式存储

 

16、QPS达到50 需要优化么?

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

 

17、QPS达到100 如何优化?

|||-begin

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

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

|||-end

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

 

18、QPS 达到800 如何优化?

|||-begin

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

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

|||-end

CDN加速、负载均衡

 

19、QPS 达到1000 如何优化?

|||-begin

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

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

|||-end

静态HTML缓存

 

20、QPS 达到2000 如何优化?

|||-begin

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

|||-end

做业务分离,分布式存储

 

 

21、高并发优化的方向有哪些?

流量优化+前端优化:比如防盗链处理、减少HTTP请求、添加异步请求、CDN加速、建立独立图片服务器、启用浏览器缓存和文件压缩等等
服务端优化+Web服务器优化:比如页面静态化、并发处理、队列处理、负载均衡等等
数据库优化:比如数据库缓存、分库分表、分区操作、读写分离、负载均衡等等

流量优化 方法

防盗链处理
前端优化 方法
减少HTTP请求
添加异步请求:比如ajax
启用浏览器缓存和文件压缩
CDN加速
建立独立图片服务器
服务端优化 方法
页面静态化
并发处理
队列处理
数据库优化 方法
数据库缓存
分库分表、分区操作
读写分离
负载均衡
Web服务器优化 方法
负载均衡

 

22、流量优化 方法?

防盗链处理

 

23、前端优化 方法?

减少HTTP请求
添加异步请求:比如ajax
启用浏览器缓存和文件压缩
CDN加速 + 建立独立图片服务器

 

24、服务端优化 方法?

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

 

25、数据库优化 方法?

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

 

26、Web服务器优化 方法?

负载均衡

 

27、如何查看页面的响应时间?

chrome浏览器->network->右下角红色字:比如 Load:1.65s

 

95 requests I 409 KB transferred I 718 KB resources l Finish:3.06s l DOMContentloaded:910 ms I Load:1.65s

 

 

 

二、内容在总结中

 

 

 

 

转载于:https://www.cnblogs.com/Renyi-Fan/p/11045520.html

你可能感兴趣的文章
如果相关不意味着因果,那么意味着什么? ——大数据时代的“因果关系”思辨...
查看>>
[LeetCode] Top K Frequent Elements
查看>>
Linux内核调优之Sysctl研究(原创)
查看>>
天猫HTML5互动技术实践
查看>>
Java千百问_05面向对象(003)_java中抽象概念如何体现的
查看>>
阿里高级数据库专家何登成:AliSQL性能优化与功能突破的演进之路
查看>>
遇到问题时不要乱了方寸
查看>>
Duplicate Symbol链接错误的原因总结和解决方法[转]
查看>>
【转载】GIT 使用时遇到的行结束符设置问题
查看>>
用Swift实现一款天气预报APP(二)
查看>>
js错误处理与调试理论和办法
查看>>
[转载学习]Linux性能监控
查看>>
MySQL-5.6.x二进制版本安装记录
查看>>
android BitMap回收
查看>>
android.support library找不到的解决方法
查看>>
windows跨线程调用控件的方法
查看>>
Date & Time & timestamptz
查看>>
Spring两种依赖注入方式的比较
查看>>
【源码】Word转PDF V1.0.1 小软件,供新手参考
查看>>
iOS开发之遍历Model类的属性并完善使用Runtime给Model类赋值
查看>>