高并发系列文章第一篇:高并发和大流量解决方案

本文将从宏观的角度上全方位剖析高并发和大流量解决方案

   从一个面试题开始讲解:PHP如何解决网站大流量与高并发的问题?

   其实这个问题不光考察php的方向,更多的是考察你对高并发架构优化的方式和能力。

   主要考察点如下:

         一、高并发架构相关概念

互联网中的高并发通常指的是并发访问,也就是在某个时间点,有多少个请求来同时访问;

通常如果一个系统的日PV在千万以上,就有可能是一个高并发的系统,但是如果有些公司完全不走技术路线,全靠机器堆,那么这个不在我们所说的高并发的讨论范围、纯属人傻钱多的 

1、对于高并发的问题,我们具体应该关心什么?

     QPS:每秒钟请求或者查询的数量,在互联网领域,指的是每秒响应的请求数(通常指的是HTTP请求); 这是一个非常重要的指标,通常在进行理解并发数在哪个点该做什么的优化可以根据QPS的量进行操作;

     吞吐量:单位时间内处理的请求数量(通常由QPS和并发数来决定的)

     响应时间:从请求发出到收到响应花费的时间。例如系统处理一个HTTP请求需要100ms,那么这100ms就是系统的响应时间;

     每个资源的响应时间如下图所示,


 PV:综合浏览量(Page View),即页面浏览量或者点击量,一个访客在多长时间内访问的的页面数量;用户每1次对网站中的每个网页访问均被记录1次。用户对同一页面的多次访问,访问量累计。

UV:独立访客( UniQue Visitor),即一定时间范围内相同访客多次访问网站,只能算为1个独立访客;其实跟IP类似;

带宽:计算带宽大小需要关注两个指标 ,峰值流量和页面的平均大小;

日网站带宽 = PV / 统计时间(换算成秒)* 平均页面大小(单位KB)* 8


此处澄清一个概念QPS并不等于并发链接数


QPS是每秒HTTP请求数量,并发链接数是系统同时能够处理的请求数量


峰值(每秒请求数)QPS  = (总PV数 * 80%)/ (8小时秒数  * 20% )

   解释:通常80%的访问量都集中在20%的时间内;俗称二八定律 8小时是做了简单的估计

  2、 那么对于QPS来说 我们要做一个压力测试  

     为什么要做压力测试:


  (1)测试能承受的最大并发数


  (2)测试最大承受的QPS的值


             比如说我们日QPS为20000 单机峰值QPS能承受500 那么最少得40台才能撑住


    常用的性能测试工具如下:ab、wrk、http_load、Web Bench、Apache JMeter 

     性能测试工具非常多 我们通过ab来讲解:

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

    ab的使用:模拟并发请求100次,总共请求5000次


    注意事项:


     1)测试机器与被测试机器要分开 


     2)切记不要对线上服务做压力测试


    3)观察测试工具ab所在的机器,以及被测试的前端机的 CPU、内存、网络等都不能超过最高限度的75%  可以通过top、htop、glances命令来观察



测试:ab -c 50  -n 1000  http://192.168.56.10:82/index.html

QPS达到极限我们该怎么做:

  随着QPS的增长,每个阶段需要根据实际情况来进行优化,优化的方案也与硬件条件,网络带宽息息相关。通常在对QPS进行优化的时候阶段也是不一样的

1、QPS达到50 

     可以称为小型网站、一般的服务器都可以轻松应付

2、QPS达到100

      假设关系型数据库的每次请求需要在0.01秒完成,如果单个页面只有一个SQL查询,那么100QPS意味着1秒要完成100次请求,但是此时我们并不能保证数据库查询能完成100次

      优化方案:数据库缓存层(redis、memcache)、数据库的负载均衡流量进行分散

3、QPS达到800

      假设我们使用的是百兆带宽、意味着网站出口的实际带宽是8M左右,假设每个页面只有大小10KB,在这个条件下,百兆带宽已经被吃完、对于带宽来说已经是极限

      优化方案:CDN加速访问、负载均衡

4、QPS达到1000

      假设使用Redis缓存数据库查询,每个页面对Redis的请求远大于直接对DB 的请求 ,那么Redis的悲观并发数大于在4w左右,但有可能在之前内网带宽已经呗吃光,表现出不稳定

     优化方案:静态HTML缓存

5、QPS达到2000

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

     优化方案:做业务分离、分布式存储

         二、高并发架构解决方案案例

    1、流量优化:防盗链处理 

    2、前端优化:减少http请求、添加异步请求 、启用浏览器缓存(添加缓存过期时间)和文件压缩(图片压缩、文件压缩、nginx gzip)、CDN加速、建立独立的图片服务器(减少IO消耗、集群处理优化cpu、IO方面)

    3、服务端优化:页面静态化、并发处理、队列处理

    4、数据库优化:数据库缓存(Redis、MongoDB)、分库分表(水平、垂直拆分)、分区操作、读写分离、负载均衡

    5、web服务器优化: 负载均衡(7层Nginx Proxy、 4层LVS)

本文就到此结束、下篇开始会对上述方案逐一来详细的进行解答、请耐心等待。。。




           

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,311评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,339评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,671评论 0 342
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,252评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,253评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,031评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,340评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,973评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,466评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,937评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,039评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,701评论 4 323
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,254评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,259评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,485评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,497评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,786评论 2 345