数据库高并发解决方案(三)图说
QPS:即服务器每秒request请求或者查询的数量,在互联网领域,值每秒的响应response的请求数
常用的性能测试工具 :ab、wrk、http_load、web bench 、 siege、Apache jmeter
- qps达到极限 : qps50 :小型网站,一般的服务器就可以应付;
- qps达到100:假设关系型数据库的每次请求在0.01秒内完成,假设单页面只有一个sql查询,那么100qps意味着1秒钟完成100次请求,但是此时我们并不能保证数据库查询能完成100次,所以达到极限,优化方案:数据库缓存层、数据库负载均衡。
- qps达到800:假设我们使用的百兆带宽,意味着网站出口的实际带宽是8M左右,假设每个页面只有10k,这个并发条件下,百兆的带宽已经吃完。方案:cdn加速、负载均衡。
- qps达到1000, 假设使用memcache 缓存数据库查询,每个页面对memcache的请求远大于对db的请求,memcahe的悲观并发数在2W左右,但有可能在这之前内网带宽已经吃光,表现出不稳定。方案:静态html缓存。
- qps达到2000 在这个级别下 文件系统访问锁都成为灾难。方案:做业务分离,分布式存储。
优化方案:
- web服务器优化 :负载均衡
- 流量优化:防盗链处理 将恶意请求屏蔽,
- 前端优化:减少http请求、添加异步请求、启用浏览器缓存和文件压缩gzip、cdn加速、建立独立的图片服务器、
- 服务端优化: 页面静态化、并发处理、redis队列处理、
- 数据库优化: 数据库缓存、分库分表、分区操作 、读写分离、负载均衡
WEB服务器负债均衡:
- 七层负载均衡实现: 基于url等应用层信息的负载均衡;代表 nginx的proxy是他一个很强大的功能,实现了7层负载均衡。功能强大、性能卓越、运行稳定, 配置灵活简单、能自动剔除工作不正常的后端服务器、上传文件使用异步模式、支持多种分配策略。
- nginx负载均衡策略:内置策略:iphash、加权轮询,
- 扩展策略:fair策略:根据后端服务器的响应时间判断负载情况,从中选出负载最轻的机器进行分流。
- 通用hash:通用hash比较简单,可以以nginx内置变量为key进行hash、
- 一致性hash:采用nginx内置的一致性hash环,支持memcache。
nginx配置:
- 四层负载均衡实现: 通过报文中的目标地址和端口,再加上负载均衡设备设置的服务器选择方式,决定最终选择的内部服务器。
- LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统;实现服务器负载均衡有三种方式NAT、DR、和TUN。
佛语:我本求心不求佛,了知三界空无物,若欲求佛但求心,只这心心心是佛