文章目录

  • 指标
    • 网络
      • 容量
      • 流量
    • 压测
      • PV(Page View)页面访问量
      • RT(Response-time)响应时间
      • QPS(Queries Per Second)每秒查询
        • RPS(Requests Per Second )吞吐量
      • TPS(Transactions Per Second)每秒事务
      • 并发数(The number of concurrent connections)
  • 操作系统限制
  • 软件限制
    • java
    • tomcat
    • Nginx
    • MySQL
  • 单机应用何时进行集群
  • 各个并发量级别的 性能瓶颈 与 架构方案
    • qps 100
    • qps 1000
    • qps 1w
    • qps 10w
    • qps 1000w
    • 其他需求
    • 案例:淘宝从几百到千万级并发的十四次架构演进之路!
  • 单机的并发上限
    • C10K问题 (单机1w并发)
    • C10M问题 (单机1000w并发)

指标

网络

容量

流量

压测

PV(Page View)页面访问量

页面被浏览的次数,每次用户访问或者刷新页面都会被计算在内。

RT(Response-time)响应时间

直接反应了系统的快慢

一个请求从开始到最后收到响应数据所花费的总体时间
响应时间一般 = CPU执行时间 = 线程等待时间(IO等待,sleep, wait)时间

QPS(Queries Per Second)每秒查询

体现系统在规定时间内所能处理多少流量

  • 通过PV 预估 峰值QPS,二八原则
    峰值时间每秒请求数(QPS) = ( 总PV数 * 80% ) / ( 每天秒数 * 20% )

  • 通过RT 计算 单线程QPS
    QPS = 1s / RT

RPS(Requests Per Second )吞吐量

体现系统处理请求的能力

等效于QPS
单位时间内系统能处理的请求数量,单位是 reqs/s

TPS(Transactions Per Second)每秒事务

事物数/秒

并发数(The number of concurrent connections)

系统的负载能力

并发量 = QPS * 平均响应时间

最佳线程数量=((线程等待时间+线程cpu时间)/线程cpu时间)* cpu数量

操作系统限制

  • Windows 每个进程中的线程数不允许超过 2000

  • Linux 每个进程中的线程数不允许超过 1000

软件限制

java

  1. Java中每开启一个线程需要耗用1MB的JVM内存空间用于作为线程栈之用
  2. 分配给 JVM 的内存越多性能也就越高,但也会加重 GC 的负担。

tomcat

  • Tomcat 默认配置的最大请求数是 150,也就是说同时支持 150 个并发,
  • 实际上也就300-400并发

Nginx

反向代理并发数 2w 官网是5w

经过优化的话,则可以稳定地达到 10w 次/秒 的处理性能。

MySQL

主键查询: 千万级别数据 >> 1-10 ms
唯一索引查询: 千万级别数据 >> 10-100 ms
非唯一索引查询: 千万级别数据 >> 100-1000ms
无索引数据: 百万级别数据 >> 1000ms+
插入操作: 1w~10w tps

mysql并发数 业内据说能做到500-1000


单机应用何时进行集群

某个应用拥有250 个以上并发的时候,应考虑应用服务器的集群。
具体能承载多少并发,需要看硬件的配置,CPU 越多性能越高,


各个并发量级别的 性能瓶颈 与 架构方案

qps 100

这一步一台正常的电脑,用常见的软件都能支持,没什么可探讨的

单服务器,单应用,单数据库

qps 1000

单机软件性能达到上限(如tomcat一般不超过500)
单机数据库瓶颈

  • 搭建tomcat集群,用Nginx 在应用层负载均衡
    tomcat节点超过5个左右的话. 集群的session复制广播导致占用带宽,服务能力先增加后下降

  • 本地缓存/分布式缓存
    通过缓存获取查询热点数据,减小数据库压力

  • 数据库 读写分离

qps 1w

集群的session共享瓶颈
不同业务直接竞争数据库,相互影响性能
单机的 写库 达到性能瓶颈

  • 分布式缓存
    将session服务化,解决session复制问题

  • 分布式架构
    按照功能点把系统拆分,拆分成独立子系统,为子系统配置集群(加服务器,不用配置session共享)。

  • 数据库
    分布式数据库
    分库分表,大表拆小表

qps 10w

单机Nginx会成为瓶颈

  • 搭建Nginx集群,用LVS/F5 传输层负载均衡

qps 1000w

此时用户肯定会分布在不同的地区,与服务器机房距离不同,导致了访问的延迟会明显不同
用户与机房的传输距离成为瓶颈

  • 通过DNS,实现机房间的负载均衡
    用户 就近/轮询 访问不同的机房,机房间同步信息
    系统可做到机房级别的水平扩展,千万级到亿级的并发量都可通过增加机房来解决

其他需求

2020年最高能达到亿级并发上限,目前市场好像没有更高的需求,期待接下来的发展,
但是 还有其他的需求未满足

  1. 大数据,人工智能等应用 需要检索分析大量数据,会产生特别复杂的查询、海量文件存储、全文检索、可变数据结构等需求, 只用数据库做会很麻烦

    • NoSQL数据库
    • 搜索引擎ElasticSearch
    • 分布式文件系统HDFS
  2. 业务做大、做广了之后,一个应用中包含了太多的业务代码,业务的升级迭代变得困难
    • 按照业务板块来划分应用代码,做成独立的微服务
  3. 服务准备运行环境,部署,运维复杂
    • 容器化技术 打包应用/服务 Docker,Kubernetes

案例:淘宝从几百到千万级并发的十四次架构演进之路!

https://www.cnblogs.com/xiaobug/p/11039259.html


单机的并发上限

http://www.52im.net/thread-561-1-1.html

C10K问题 (单机1w并发)

一台机器无法创建很多进程。如果是C10K就要创建1万个进程,那么单机而言操作系统是无法承受的(往往出现效率低下甚至完全瘫痪)。

如果是采用分布式系统,维持1亿用户在线需要10万台服务器,成本巨大,也只有Facebook、Google、雅虎等巨头才有财力购买如此多的服务器。

  • 过去的10年里,高性能网络编程技术领域里经过众多开发者的努力,已很好地解决了C10K问题

C10M问题 (单机1000w并发)

  • 目前大佬们正在研究的问题

1千万的并发连接数;
100万个连接/秒:每个连接以这个速率持续约10秒;
10GB/秒的连接:快速连接到互联网;
1千万个数据包/秒:据估计目前的服务器每秒处理50K数据包,以后会更多;
10微秒的延迟:可扩展服务器也许可以处理这个规模(但延迟可能会飙升);
10微秒的抖动:限制最大延迟;
并发10核技术:软件应支持更多核的服务器(通常情况下,软件能轻松扩展到四核,服务器可以扩展到更多核,因此需要重写软件,以支持更多核的服务器)。

常见软件并发量与对应架构相关推荐

  1. 测试软件并发量工具,并发模拟工具使用篇

    格式:ab [options] [http://]hostname[:port]/path -n requests Number of requests to perform     //本次测试发起 ...

  2. mysql并发量_高并发秒杀系统架构解密,不是所有的秒杀都是秒杀!

    推荐阅读: 学会这些微服务+Tomcat+NGINX+MySQL+Redis,再去面试阿里P7岗吧 "火爆"的微服务架构你还不会?从基础到原理的PDF文档快来学! Nginx负载均 ...

  3. 电商项目的并发量一般是多少_【高并发】高并发秒杀系统架构解密,不是所有的秒杀都是秒杀!...

    写在前面 很多小伙伴反馈说,高并发专题学了那么久,但是,在真正做项目时,仍然不知道如何下手处理高并发业务场景!甚至很多小伙伴仍然停留在只是简单的提供接口(CRUD)阶段,不知道学习的并发知识如何运用到 ...

  4. 大并发量,大数据量基于SSH应用程序架构有关问题

    首先介绍下情况,并发量最多可达到万级,应用程序架构是基于SSH的,系统级是通过Apache分发,集群配置.但是目前情况不理想,我对系统级架构都是在钻研期间,下面是自己查的总结,但还是不怎么理想,各位熟 ...

  5. 系统并发量及常见性能指标

    PV 即 page view,页面浏览量 用户每一次对网站中的每个页面访问均被记录1次.用户对同一页面的多次刷新,访问量累计. UV 即 Unique visitor,独立访客 通过客户端的cooki ...

  6. 高并发高流量网站架构详解--转载

    原文地址:http://www.ha97.com/818.html Web2.0的兴起,掀起了互联网新一轮的网络创业大潮.以用户为导 向的新网站建设概念,细分了网站功能和用户群,不仅成功的造就了一大批 ...

  7. 厉害了,淘宝千万并发,14 次架构演进…

    本文以设计淘宝网的后台架构为例,介绍从一百个并发到千万级并发情况下服务端的架构的14次演进过程,同时列举出每个演进阶段会遇到的相关技术,让大家对架构的演进有一个整体的认知. 文章最后汇总了一些架构设计 ...

  8. 高并发高可用的 架构实践

    一. 设计理念 1.     空间换时间 1)     多级缓存,静态化 客户端页面缓存(http header中包含Expires/Cache of Control,last modified(30 ...

  9. 并发量,QPS,TPS,看这一篇就够了

    目录 引子 饭店问题 网站 类比饭店分析 性能测试 软件性能测试的基本概念和计算公式 一.软件性能的关注点 二.软件性能的几个主要术语 引子 饭店问题  饭店优化 网站 类比饭店分析 当一条请求从客户 ...

最新文章

  1. JavaScript实现Apache .htaccess 转化nginx生成器工具-toolfk程序员工具网
  2. Codeforces #440.Div.2
  3. Linux 如何取进程运行时间,linux -- 获取进程执行时间
  4. 语言速算24点的小窍门_4秒钟1道题!12岁少年三夺24点大赛冠军
  5. 【bzoj1010】玩具装箱toy——斜率优化dp
  6. 黑客攻防技术宝典Web实战篇第2版—第6章 攻击验证机制
  7. 违规停放共享单车 319人被纳入限制骑行“黑名单”
  8. 第七部分:小插曲,Deferred
  9. ios开发网络学习三:NSURLConnection小文件大文件下载
  10. 关于C语言进位问题的小测试(直接去尾or四舍五入)
  11. ide中项目文件夹右下角蓝色小方块
  12. AHRS和INS的区别
  13. 【软件设计】细数软件开发的核心原则
  14. angularjs使用lhgdialog做对话框控件
  15. python自己做电子词典_利用PyQt5制作电子词典
  16. windows tcp端口映射或端口转发
  17. 科大讯飞语音转文本(极速转换和普通转换两种)
  18. 第12期:Spark零基础学习路线
  19. 使用Tushare进行金融时间序列分析研究
  20. Python3 实现淘女郎照片爬虫

热门文章

  1. OpenCv中值滤波
  2. 程序人生:从全栈工程师看技术人生
  3. RGB颜色/色卡对照表
  4. (转)MTK-开发平台搭建与入门教程
  5. Linux下PureFTPd配置安装(完整版)
  6. 企信通短信平台接口文档
  7. fastai机器学习课程-甲骨文 ORADC-AIG学习公开课(Lesson3)
  8. DHTML 动态样式
  9. 支付宝APP支付服务端加签
  10. faceu激萌相机里面vue_激萌相机怎么玩?激萌相机faceu使用教程[多图]