点击上方“方志朋”,选择“设为星标”

回复”666“获取新整理的面试资料

作者:边鹏_尛爺鑫

https://segmentfault.com/a/1190000010844969

大家心里仔细想想,当你们听到高并发网站时,心里对这个网站是个什么概念?

首先想到的是淘宝吗?带着问题,我们一起思考技术~

写这个话题是因为我对搜索引擎给我的答案很不满意,然后决定把思考的一些东西分享出来,希望可以大家彼此讨论下。

我们经常在面试的时候,被问到有没有高并发的经验?先不说哪些考高并发的装逼公司。我思考的是什么才算是高并发?你一天几个pv肯定高不了。首先在网上查找一下,并未找到明确的标准定义。那么什么是并发呢?

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

摘自百度百科

我们说的高并发是什么?

上面的定义明显不是我们通常所言的并发,在互联网时代,所讲的并发、高并发,通常是指并发访问。也就是在某个时间点,有多少个访问同时到来。

我看到有人给高并发下了类似的定义:

高并发通常是指我们提供的系统服务能够同时并行处理很多请求。

来看看这个定义,这里首先把并发给混淆到并行了。关于并发并行的区别看这里我就不多说,继续探讨并发。

然后定义又说很多请求?什么叫很多请求?做为中国人,这个词让我想象力一发不可收拾......好了,拉回来,继续本文。

那么从上面的分析,可以看出来高并发在网络上业界也没有明确的定义。但根据我搜索情况,一般都是pv在千万级别以上的公司才会涉及到这个概念。所以我得出一个自定义概念:如果某个系统的日pv在千万级别以上,他就可能是一个高并发的系统。

为什么说是可能?那是因为有的公司完全不走技术路线,全靠机器堆,这不在我们的讨论范围。

高并发的问题,我们具体该关心什么?

讲真话,高并发是个比较抽象的概念。很难有一个统一的可衡量的标准。哪么有一些其它维度的标准指标来衡量系统的性能吗?

搬出以前计算机课程里边的一些指标来跟大家聊聊。网站性能测试指标(QPS,TPS,吞吐量,响应时间)详解,这篇看下。

先声明几个概念,别打瞌睡。

1.QPS(TPS):每秒钟 request/事务 数量,在互联网领域,指每秒响应请求数(指http请求);

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

3.响应时间:系统对一个请求做出响应的平均时间。例如系统处理一个HTTP请求需要200ms,这个200ms就是系统的响应时间(我认为这里应该仅包含处理时间,网络传输时间忽略)。

这里一定要注意呃,QPS ≠ 并发数

并发是指,某个时刻有多少个访问同时到来。QPS是指秒钟响应的请求数量。那么这里就肯容易推算出一个公式:

QPS = 并发数 / 平均响应时间

后面我们的分析都是围绕这个公示来进行展开,没明白的再回味一下。

现在我们来假设一个场景:既然QPS是每秒钟处理的http请求数量。那么1s = 1000ms。假设我们当前一个http请求服务器处理完成需要100ms(即那么 平均响应时间 = 100ms )。那么它1s钟可以处理10个请求。也就是说 qps = 10。推算出 并发数 = 10

常常我们被问到高并发的问题,其实从某种程度上来说是怎么提高现有程序的性能。现在我们基于上面的假设,来进行分析。假设现在有个系统性能上就是我们上面的假设,它每天有 300万pv,运行在单机上(当然经常宕机),按照上面的系统性能数据,给出优化解决方案。

提高并发能力

通过上面的分析,要提升并发能力,我们就需要提升我们的qps(其实这里并不完全正确,为了说明问题,我们先放弃一部分正确性

最快速解决方案,就是增加机器。我们根据以上情况来实际计算一下。

1.访问量:200w pv

2.QPS:10

根据日常经验,80% 的访问量集中在 20%的时间,算一下这 200w pv实际需要机器达到多少qps才能满足。

qps = (200w * 0.8) / (24 * 3600 * 0.3)
qps = 61.7

实际上如果在单机上,要求我们每秒钟处理请求必须达到 61.7 以上才行,而实际上我们当前系统的qps是 10。那么怎么解决?

方案一:上机器

个人的能力是有限的,团队的力量是无穷的。既然一台机器搞不定,我们就多上几台机器。这就涉及到db主从、读写分离、负载均衡等技术。

它的原理就是分流,把以前集中的压力分散开来。改方案见效快,灵活,实践起来也更快。

方案二:增加单机性能

单机到底性能能够增加到一个什么程度,这取决于你的机器配置,也取决于你的服务到底有多复杂。

ps:写到这里突然有点能够理解为什网上对高并发都是讲很多请求,没有具体数据了,因为这真的只能针对业务来讲,100个并发对静态网页来说根本没有的事儿,但是对于某些密集计算型的估计...

那么常见的单机如何提升性能?比如:增加不常变化数据的缓存,开启php的opcache,优化代码(如:n+1问题、多重嵌套循环、深层递归等),db表优化等等。由于这些每一个点拿出来都够写一本书了。咋就不继续下去。

总结

由于笔者自己也是没有实际经历过kw级别pv场景,很多东西讲的不一定对,本文也是理清自己的一点思路。希望能够与更多朋友进行讨论。

也希望本文能够解决你的一点疑惑,让我们能够从高大上的概念落实到实际问题中去。

参考资料

1.http://h5ip.cn/ifP8

2.http://www.ha97.com/5095.html

热门内容:     史上最烂的项目:苦撑 12 年,600 多万行代码一次 Jar 包升级引发的血案 & 解决如何优雅的导出 Excel
JDK 13 新特性一览某小公司RESTful、共用接口、前后端分离、接口约定的实践
请停止学习框架IntelliJ IDEA 2019.3这回真的要飞起来了,新特性抢先看!最近面试BAT,整理一份面试资料《Java面试BAT通关手册》,覆盖了Java核心技术、JVM、Java并发、SSM、微服务、数据库、数据结构等等。获取方式:点“在看”,关注公众号并回复 666 领取,更多内容陆续奉上。明天见(。・ω・。)ノ♡

到底什么级别才算是高并发?相关推荐

  1. 多少量级才算是高并发

    我认为高并发系统的本质就是充分利用硬件资源,提升cpu.io设备的综合利用率. 操作系统利用中断等分时复用机制解决了cpu的利用率问题,利用dma技术解决了io设备的利用率问题.但是并没有解决两者相互 ...

  2. 到底多大才算高并发?

    定义: 高并发(High Concurrency)是使用技术手段使系统可以并行处理很多请求. 关键指标: -响应时间(Response Time) -吞吐量(Throughput) -每秒查询率QPS ...

  3. 什么是并发、并行、高并发?到底多大才算高并发?

    并发是指在一个时间段内有多个进程在执行.  并行指的是在同一时刻有多个进程在同时执行. 如果是在只有一个CPU的情况下,是无法实现并行的,因为同一时刻只能有一个进程被调度执行,如果此时同时要执行其他进 ...

  4. 到底多大并发才算高并发?一文带你全面认识高并发!

    点击上方蓝色小字,关注"涛哥聊Python" 重磅干货,第一时间送达 作者 | 骆俊武 来源 | IT人的职场进阶 高并发,几乎是每个程序员都想拥有的经验.原因很简单:随着流量变大 ...

  5. 到底多大并发才算高并发?

    高并发,几乎是每个程序员都想拥有的经验.原因很简单:随着流量变大,会遇到各种各样的技术问题,比如接口响应超时.CPU load升高.GC频繁.死锁.大数据量存储等等,这些问题能推动我们在技术深度上不断 ...

  6. 高并发到底要怎么算才是高并发?

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

  7. qps多少才算高并发_要大到什么程度?才算高并发?

    文章目录 前言 在这里插入图片描述 一.什么是高并发? 定义: 关键指标: 关键指标的维度: 并发 引申指标: 二.多大算高并发 场景1: 场景2: 三.高并发的本质 对比包括: 前提包括: 总结 前 ...

  8. qps多少才算高并发_AGV小车价格多少才算合适?

    对于AGV小车,相信大家对其都有一定了解,今天我们就不一一介绍了,回到主题,AGV小车价格行情怎样?AGV小车价格多少才算合适,你才敢买?AGV小车的价格是根据它的额定载荷和AGV类型来规定的,额定载 ...

  9. 什么才算是高质量的代码?

    好的代码一定是整洁的,并且能够帮助阅读的人快速理解和定位.好的代码可以加快应用的开发迭代速度,不必花过多的时间来修复 bug 和完善代码.好的代码不但能够使得新的项目成员更容易加入项目,同时方便项目组 ...

最新文章

  1. java线程——join
  2. 《不留》--王菲 Faye
  3. Linux Kernel TCP/IP Stack — 协议栈收包处理流程
  4. 深度学习笔记二:PAC,PAC白化,ZCA白化
  5. Nodejs开源项目推荐
  6. 嵌入式linux应用层中断函数,嵌入式LINUX驱动开发(中断处理函数)
  7. 基于JAVA+SpringMVC+Mybatis+MYSQL的校园订餐系统
  8. 2016012013 王雪 散列函数的应用及其安全性
  9. 虚拟机管理程序、虚拟化和云: 深入剖析 PowerVM 虚拟机管理程序
  10. PCShare流量检测报告
  11. android actionBar searchview 默认展开,并且放大镜图标在编辑框内。
  12. matlab ols hac,R语言中实现广义相加模型GAM和普通最小二乘(OLS)回归
  13. 内分泌6项检查费用_内分泌6项检查费用是多少 详解内分泌6项检查是什么
  14. 入门,前后端实现简单账号密码登录
  15. 15 个边玩游戏边学编程的网站
  16. 中秋节活动中奖名单公布啦!!
  17. 1.MySQL数据库 2.SQL语句
  18. 小程序中的axio——flyio的使用
  19. C-Kermit在linux 下的安装和使用
  20. python——三角函数用法

热门文章

  1. Android与iOS对比
  2. Android自动化测试框架
  3. 【组队学习】【23期】Datawhale深度推荐模型
  4. Matlab与线性代数 -- 魔方矩阵
  5. 【ACM】POJ 3069
  6. 2013高教社杯---B碎纸片的拼接复原
  7. 这些算法在印度农村医疗中发挥极大作用,未来还将发挥哪些作用?
  8. 那些打着AI万金油旗号的产品欺骗大众,如何识别?
  9. 程序员假冒AI,印度公司竟骗取2亿元投资
  10. 速度提升270倍!微软和浙大联合推出全新语音合成系统FastSpeech