- 互联网时代,讲的并发、高并发,通常是指
并发访问
。也就是在某个时间点,有多少个访问同时到来。 QPS(Queries per second)
: 每秒钟请求或者查询的数量,在互联网领域,指每秒响应请求数(指 HTTP 请求数)。吞吐量(Throughput)
: 单位时间内处理的请求数量(通常由QPS
与并发数决定)响应时间(Response time)
: 从请求发出到响应花费的时间PV
: 综合浏览量(Page View),即页面浏览量或者点击量,一个访客在24小时内访问的页面数量。
同一个人浏览你的网站同一页面,只记作一次PV
UV
: 独立访客(UniQue Visitor),即一定时间范围内相同访客多次访问网站,只计算为1个独立访客。带宽(Bandwidth )
: 计算带宽需关注两个指标,峰值流量和页面的平均大小。
日网站带宽=PV/统计时间(换算到秒)* 平均页面大小(单位KB)* 8
峰值一般是平均值的倍数,根据实际情况来定QPS
不等于并发连接数
QPS
是每秒HTTP
请求数量,并发连接数
是系统同时处理的请求数量(总PV数*80%) / (6小时数*20%) = 峰值每秒请求数
80% 的访问量集中在 20% 的时间- 常用性能测试工具
ab、wrk、http_load、Web Bench、Siege、Apache JMeter
ab
全程是apache benchmark
,是apache
官方推出的工具。创建多个并发访问线程,模拟多个访问者同时对某一URL
地址进行访问。它的测试目标是基于URL
的,因此,它既可以用来测试apache
的负载压力,也可以测试nginx
、lighthttp
、tomcat
、IIS
等其它Web
服务器的压力。
ab
的使用
模拟并发请求 100 次,总共请求 5000 次
eg:ab -c 100 -n 500 http://xxx.com
- 解决方案
(1)QPS
达到100
假设关系型数据库的每次请求在0.01
秒完成
假设单页面只有一个SQL
查询,那么100 QPS
意味着1
秒钟完成100
次请求,但是此时我们并不能保证数据库查询能完成100
次
方案:数据库缓存层、数据库的负载均衡
(2)QPS
达到800
假设我们使用百兆带宽,意味着网站出口的实际带宽是8M
左右
假设每个页面只有10K
,在这个并发条件下,百兆带宽已经吃完
方案:CDN
加速、负载均衡
(3)QPS
达到1000
假设使用Memcache
缓存数据库查询数据,每个页面对Memcache
的请求远大于请求直接对DB
的请求
Memcache
的悲观并发数在2W
左右,但有可能在之前内网带宽已经吃光,表现出不稳定
方案:静态HTML
缓存
(4)QPS
达到2000
这个级别下,文件系统访问锁都成为了灾难
方案:做业务分离,分布式存储 - 优化方式
流量优化
:防盗链处理
前端优化
:减少 HTTP 请求、添加异步请求、启用浏览器缓存和文件压缩、CDN 加速、建立独立图片服务器
服务端优化
:页面静态化、并发处理、队列处理
数据库优化
:数据库缓存、分库分表、分区操作、读写分离
Web服务器优化
:负载均衡
以上资源均来自网络,只为记录~