一、概念
- QPS:每秒钟请求或者查询的数量,通常是指每秒相应请求数(http)
- QPS不等于并发连接数,QPS是每秒的HTTP请求数量,并发连接数是指系统同时处理的请求数量
- 峰值的每秒请求数(QPS)= (总PV数 80%)/(6小时秒数 20%)
- 峰值QPS的计算规律主要是80%的访问量集中在20%的访问时间
- 吞吐量:单位时间内处理请求的数量
- 响应时间:从请求发出到收到响应花费的时间
- PV(page view)综合浏览量,即页面点击数。通常日PV在千万级就是高并发的网站
- UV(unique visitor)独立访客,一定时间内相同访客访问网站,只计算为1个独立访客
带宽:计算带宽大小,我们需要关注两个指标,峰值流量和平均大小
日网站的带宽 = PV/统计时间(秒) 平均页面大小(KB) 8
压力测试
- 1.测试能承受的最大并发
- 2.测试最大承受QPS值
ab(apache benchmark)工具使用:
ab会创建多个并发访问线程,模拟多个访问者同时对一个URL地址进行访问。
1 | ab的基本使用 |
此处介绍一些QPS的数值:
- 50:小型网站,一般服务器即可应付
- 100:假设数据库每次请求都在0.01秒内完成,单个页面只有一个sql,100QPS意味着1秒钟要完成100次请求,但是我们数据库不一定能完成100次查询。此时优化方案为:数据库缓存、数据库负载均衡
- 800:假设网站有百兆带宽,意味着实际出口的带宽为8M左右,如果每个页面只有10K,在这个QPS下,带宽已经吃完。此时的方案:CDN加速,负载均衡
- 1000: 假设使用nosql来缓存数据库查询(memcache或redis),每个页面对nosql的请求远大于直接对DB的请求
- 2000: 业务分离,做分布式存储
二、优化方案
- 流量优化:
- 防盗链处理
- 减少前端http请求(合并css、js等静态资源)
- 添加异步请求,减少http请求的并发量
- 启用浏览器的缓存和使用文件压缩
- CDN加速,减轻服务器压力和带宽压力
- 服务端优化
- 页面静态化
- 并发处理
- 数据库优化
- 数据库缓存
- 分库分表,分区操作
- 读写分离
- 负载均衡
- web服务器优化
- 负载均衡