网站开发中的高并发理解

什么是并发?

通常是指并发访问,也就是在某个时间点,有多少个访问同时到来。

什么是高并发?

如果一个系统的日PV在千万以上,有可能是一个高并发系统
有些公司完全不走技术路线,全靠机器堆。
QPS :每秒请求或者查询的数量,在互联网领域值每秒的请求数
吞吐量:单位时间内处理的请求数量(通常有QPS与并发数决定)
响应时间:数据从请求到返回的时间,一个http请求的时间
PV:综合浏览量(Page Viiew),即页面的点击量,一个访客在24小时内访问的页面数量
同一个人浏览你网站的同一个页面,只记做1次PV
UV:独立访客(UniQue Visitor),即一定时间范围内相同访客多次访问网站,只能算1个独立访客
带宽:计算带宽大小需要关注两个指标,峰值流量和页面的平均大小
日网站带宽=PV/统计时间(换算成秒)平均页面大小(KB)8
峰值一般是平均值的倍数
QPS不等于并发连接数,QPS是每秒http请求数量,并发连接数是系统同时处理的请求数量
高并发计算:(总PV数80%)/(6小时秒数20%)=峰值每秒请求数(QPS)
80%的访问量集中在20%的时间

高并发应该关心什么?

压力测试

测试能承受的最大并发数
测试最大能承受的QPS峰值

性能测试工具

ab 全称apache benchmark 是apache官方推出的工具 原理是模拟多个访问者同时对一个URL地址访问。
模拟请求100次 总共请求5000次
ab -c 100 -n 5000 带测试的网站
测试机器与被测试机器分开(否则结果不稳定)
不要对线上服务器做压力测试
观察测试工具db所在的机器,以及被检测的前端机的CPU 内存 网络等都不要超过最高限度是75%
wrk
http_load
web bench
siege
Apache JMeter

QPS优化

QPS达到50:

小型网站,一般的服务器可以应付

QPS达到100

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

QPS达到800

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

QPS达到1000

假设使用Memcache缓存数据库查询受损,每个页面对Memcache的请求远大于DB的请求
Memecache的悲观并发数在2w左右,但是有可能在之前内网的带宽一加被吃光了,出现不稳定情况
方案:静态HTML缓存

QPS达到2000

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

流量优化

防盗链处理

前端优化

减少http请求
添加异步请求
启用浏览器缓存和文件压缩
CDN加速
建立独立的图片服务器

服务端优化

页面静态化
并发处理 多线程、异步处理
队列处理

数据库优化

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

服务器优化

负载均衡

赞(2) 打赏
特别声明:除特殊标注,本站文章均为原创,遵循CC BY-NC 3.0,转载请注明出处。三伏磨 » 网站开发中的高并发理解

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏