分布式并发和JVM

高并发-高并发和大流量解决方案

2019-04-28  本文已影响608人  AGEGG

高并发架构相关概念

并发

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

我们所说的高并发

并发、高并发,通常指并发访问,也就是在某个时间点,有多少个访问同时到来
通常如果一个系统日PV在千万以上,有可能是一个高并发的系统

高并发问题,关心问题:

常用性能测试工具

ab、wrk、http_load、Web Bench、Siege、Apache JMeter

ab

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

ab使用

模拟并发请求100次,总共请求5000次
ab -c 100 -n 5000 待测试网站

注意事项

ab安装

apache 自带

> yum -y install http-tools
> ab
> ab -c 100 -n 5000 http://121.42.60.3/phpinfo.php
image.png

Complete requests:5000//访问了5000次
Failed requests: 2946 //失败了2946次
Requests per second: 505.36#sec//QPS

QPS达到极限

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

QPS达到50

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

QPS达到100

假设关系型数据库的每次请求在0.01秒完成
假设单页面只有一个SQL查询,那么100QPS意味着1秒钟完成100次请求,但是此时我们并不能保证数据库查询能完成100次
方案:数据库缓存层、数据库的负载均衡

QPS达到800

假设我们使用百兆带宽,意味着网站出口的实际带宽是8M左右,假设每个页面只有10K,在这个并发条件下,百兆带宽已经吃完
方案:CDN加速、负载均衡

QPS达到1000

假设使用Memcache缓存数据库查询数据,每个页面对Memcache的请求远大于直接对DB的请求
Memcache的悲观并发数在2W左右,但有可能在之前内网带宽已经吃光,表现出不稳定
方案:静态HTML缓存

QPS达到2000

这个级别下,文件系统访问锁都成为了灾难
方案:做业务分离,分布式存储

高并发解决方案

流量优化

防盗链处理

前端优化

减少HTTP请求(例如精灵图)
添加异步请求
启用浏览器缓存和文件压缩
CDN加速
建立独立图片服务器

服务端优化

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

数据库优化

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

Web服务器优化

负载均衡

上一篇 下一篇

猜你喜欢

热点阅读