精华内容
下载资源
问答
  • 吞吐量什么意思 这篇文章的灵感来自于在内存管理术语中的“ Pig in the Python ”定义。 显然,该术语用于解释GC反复促进大对象世代相传的情况。 据推测,这样做的效果类似于Python吞下整个猎物,只是在消化过程中被...
    吞吐量什么意思

    吞吐量什么意思

    全蛇
    这篇文章的灵感来自于在内存管理术语中的“ Pig in the Python ”定义。 显然,该术语用于解释GC反复促进大对象世代相传的情况。 据推测,这样做的效果类似于Python吞下整个猎物,只是在消化过程中被固定住了。

    在接下来的24小时里,我简直无法理解令人窒息的python的图片。 就像精神科医生所说的那样,消除恐惧的最好方法就是谈论它们。 所以我们开始。 但是,除了Python,其余的故事都是关于垃圾收集优化的。 我承诺。

    垃圾回收暂停是众所周知的性能瓶颈。 现代JVM确实带有高级垃圾收集器,但是据我所知,为特定应用程序找到最佳配置仍然很困难。 为了有机会手动解决该问题,需要了解垃圾收集算法的确切机制。 这篇文章可能会在这方面为您提供帮助,因为我将使用一个示例来演示JVM配置中的微小更改如何影响您的应用程序的吞吐量。

    我们用来演示GC对吞吐量影响的应用程序很简单。 它仅包含两个线程:

    • PigEater –模拟一种情况,Python不断吃掉另一头猪。 该代码通过在java.util.List中添加32MB字节并在每次尝试后Hibernate100ms来实现此目的。
    • PigDigester –模拟异步摘要过程。 该代码仅通过使该猪列表无效来实现消化。 由于这是一个相当累的过程,因此在每次参考清洁后,该线程将睡眠2000毫秒。

    两个线程都将在while循环中运行,继续吃和消化,直到蛇吃饱为止。 大约有5,000头猪被吃掉。

    package eu.plumbr.demo;
    
    public class PigInThePython {
      static volatile List pigs = new ArrayList();
      static volatile int pigsEaten = 0;
      static final int ENOUGH_PIGS = 5000;
    
      public static void main(String[] args) throws InterruptedException {
        new PigEater().start();
        new PigDigester().start();
      }
    
      static class PigEater extends Thread {
    
        @Override
        public void run() {
          while (true) {
            pigs.add(new byte[32 * 1024 * 1024]); //32MB per pig
            if (pigsEaten > ENOUGH_PIGS) return;
            takeANap(100);
          }
        }
      }
    
      static class PigDigester extends Thread {
        @Override
        public void run() {
          long start = System.currentTimeMillis();
    
          while (true) {
            takeANap(2000);
            pigsEaten+=pigs.size();
            pigs = new ArrayList();
            if (pigsEaten > ENOUGH_PIGS)  {
              System.out.format("Digested %d pigs in %d ms.%n",pigsEaten, System.currentTimeMillis()-start);
              return;
            }
          }
        }
      }
    
      static void takeANap(int ms) {
        try {
          Thread.sleep(ms);
        } catch (Exception e) {
          e.printStackTrace();
        }
      }
    }

    现在让我们将该系统的吞吐量定义为“每秒消化的猪的数量”。 考虑到每100毫秒后将猪塞入python中,我们看到该系统的理论最大吞吐量因此可以达到10头/秒。

    配置GC示例

    让我们来看一下使用两种不同配置的系统行为。 在所有情况下,该应用程序都是使用具有8G物理内存的双核Mac(OS X 10.9.3)运行的。

    第一种配置:

    • 4G堆( -Xms4g –Xmx4g )
    • 使用CMS清理旧的(-XX:+ UseConcMarkSweepGC )和并行清理年轻的-XX:+ UseParNewGC )
    • 已将12,5%的堆( -Xmn512m )分配给年轻一代,从而进一步将Eden和Survivor空间的大小限制为相同大小。

    第二种配置有些不同:

    • 2G堆( -Xms2g –Xmx2g )
    • 使用并行GC在年轻一代和终身一代中进行垃圾收集( -XX:+ UseParallelGC )
    • 已将堆的75%分配给年轻一代( -Xmn1536m )

    现在该下赌注了,哪种配置在吞吐量方面表现更好(每秒吃掉的猪,还记得吗?)。 你们那些花钱买第一种配置的人,我一定会让您失望的。 结果完全相反:

    • 第一种配置(大堆,大旧空间,CMS GC)每秒可以吃掉8.2头猪
    • 第二种配置(较小的堆2倍,较大的幼小空间,并行GC)每秒可吞噬9.2头猪

    现在,让我对结果进行透视。 分配的资源减少了2倍(内存方式),吞吐量提高了12% 这与常识相反,可能需要进一步澄清实际发生的情况。

    解释GC结果

    您所面对的原因并不是太复杂,而当您更仔细地观察GC在测试运行过程中所做的工作时,答案就直盯着您。 为此,您可以使用自己选择的工具,我在jstat的帮助下进行了深入研究,类似于以下内容

    jstat -gc -t -h20 PID 1秒

    查看数据,我注意到第一个配置经历了1,129个垃圾回收周期(YGCT + FGCT),总共花费了63.723秒:

    Timestamp        S0C    S1C    S0U    S1U      EC       EU        OC         OU       PC     PU    YGC     YGCT    FGC    FGCT     GCT   
    594.0 174720.0 174720.0 163844.1  0.0   174848.0 131074.1 3670016.0  2621693.5  21248.0 2580.9   1006   63.182  116 	0.236   63.419
    595.0 174720.0 174720.0 163842.1  0.0   174848.0 65538.0  3670016.0  3047677.9  21248.0 2580.9   1008   63.310  117 	0.236   63.546
    596.1 174720.0 174720.0 98308.0 163842.1 174848.0 163844.2 3670016.0   491772.9  21248.0 2580.9   1010   63.354  118 	0.240   63.595
    597.0 174720.0 174720.0  0.0   163840.1 174848.0 131074.1 3670016.0   688380.1  21248.0 2580.9   1011   63.482  118 	0.240   63.723

    第二种配置总共暂停了168次(YGCT + FGCT),仅11.409秒。

    Timestamp        S0C    S1C    S0U    S1U      EC       EU        OC         OU       PC     PU    YGC     YGCT    FGC    FGCT     GCT   
    539.3 164352.0 164352.0  0.0    0.0   1211904.0 98306.0   524288.0   164352.2  21504.0 2579.2 	27    2.969  141 	8.441   11.409
    540.3 164352.0 164352.0  0.0    0.0   1211904.0 425986.2  524288.0   164352.2  21504.0 2579.2 	27    2.969  141 	8.441   11.409
    541.4 164352.0 164352.0  0.0    0.0   1211904.0 720900.4  524288.0   164352.2  21504.0 2579.2 	27    2.969  141 	8.441   11.409
    542.3 164352.0 164352.0  0.0	0.0   1211904.0 1015812.6  524288.0   164352.2  21504.0 2579.2 	27	2.969  141 	8.441   11.409

    考虑到在这两种情况下需要进行的工作在以下方面是等效的:–在看不到长寿的物体的情况下,GC在此养猪活动中的职责只是尽可能快地摆脱一切。 使用第一种配置时,GC仅被迫运行约6.7倍,导致总暂停时间延长约5.6倍。

    因此,这个故事实现了两个目的。 首先,最重要的是,我希望我能从头上看到一条令人窒息的Python的照片。 另一个更重要的收获是–调整GC充其量是一项棘手的练习,需要深刻理解几个基本概念。 即使使用本博客文章中使用的真正琐碎的应用程序,您将要面对的结果也可能对吞吐量和容量规划产生重大影响。 在实际应用中,差异甚至更加惊人。 因此,选择就是您的选择,您既可以掌握概念,也可以专注于日常工作,并让Plumbr根据您的需求找到合适的GC配置

    翻译自: https://www.javacodegeeks.com/2014/09/garbage-collection-increasing-the-throughput.html

    吞吐量什么意思

    展开全文
  • 每秒的数据处理量,即单位时间内完成的指令数。...吞吐量是在给定时间段内系统完成的交易数量。即系统的吞吐量越大,说明系统在单位时间内完成的用户或系统请求越多,系统的资源得到充分利用。 ...

    每秒的数据处理量,即单位时间内完成的指令数。

    吞吐量是在给定时间段内系统完成的交易数量。即系统的吞吐量越大,说明系统在单位时间内完成的用户或系统请求越多,系统的资源得到充分利用。    

    展开全文
  • 主要介绍了TPS(吞吐量)、QPS(每秒查询率)、并发数、RT(响应时间)是什么意思,需要的朋友可以参考下
  • 一般而言,吞吐量是一个比较通用的指标,两个具有不同用户数和用户使用模式的系统,如果其最大吞吐量基本一致,则可以判断两个系统的处理能力基本一致。 3. 并发用户数 并发用户数是指系统可以同时承载的正常使用...

    1. 响应时间(RT)

    响应时间是指系统对请求作出响应的时间。直观上看,这个指标与人对软件性能的主观感受是非常一致的,因为它完整地记录了整个计算机系统处理请求的时间。由于一个系统通常会提供许多功能,而不同功能的处理逻辑也千差万别,因而不同功能的响应时间也不尽相同,甚至同一功能在不同输入数据的情况下响应时间也不相同。所以,在讨论一个系统的响应时间时,人们通常是指该系统所有功能的平均时间或者所有功能的最大响应时间。当然,往往也需要对每个或每组功能讨论其平均响应时间和最大响应时间。

    对于单机的没有并发操作的应用系统而言,人们普遍认为响应时间是一个合理且准确的性能指标。需要指出的是,响应时间的绝对值并不能直接反映软件的性能的高低,软件性能的高低实际上取决于用户对该响应时间的接受程度。对于一个游戏软件来说,响应时间小于100毫秒应该是不错的,响应时间在1秒左右可能属于勉强可以接受,如果响应时间达到3秒就完全难以接受了。而对于编译系统来说,完整编译一个较大规模软件的源代码可能需要几十分钟甚至更长时间,但这些响应时间对于用户来说都是可以接受的。

    2. 吞吐量(Throughput)

    吞吐量是指系统在单位时间内处理请求的数量。对于无并发的应用系统而言,吞吐量与响应时间成严格的反比关系,实际上此时吞吐量就是响应时间的倒数。前面已经说过,对于单用户的系统,响应时间(或者系统响应时间和应用延迟时间)可以很好地度量系统的性能,但对于并发系统,通常需要用吞吐量作为性能指标。

    对于一个多用户的系统,如果只有一个用户使用时系统的平均响应时间是t,当有你n个用户使用时,每个用户看到的响应时间通常并不是n×t,而往往比n×t小很多(当然,在某些特殊情况下也可能比n×t大,甚至大很多)。这是因为处理每个请求需要用到很多资源,由于每个请求的处理过程中有许多不走难以并发执行,这导致在具体的一个时间点,所占资源往往并不多。也就是说在处理单个请求时,在每个时间点都可能有许多资源被闲置,当处理多个请求时,如果资源配置合理,每个用户看到的平均响应时间并不随用户数的增加而线性增加。实际上,不同系统的平均响应时间随用户数增加而增长的速度也不大相同,这也是采用吞吐量来度量并发系统的性能的主要原因。一般而言,吞吐量是一个比较通用的指标,两个具有不同用户数和用户使用模式的系统,如果其最大吞吐量基本一致,则可以判断两个系统的处理能力基本一致。

    3. 并发用户数

    并发用户数是指系统可以同时承载的正常使用系统功能的用户的数量。与吞吐量相比,并发用户数是一个更直观但也更笼统的性能指标。实际上,并发用户数是一个非常不准确的指标,因为用户不同的使用模式会导致不同用户在单位时间发出不同数量的请求。一网站系统为例,假设用户只有注册后才能使用,但注册用户并不是每时每刻都在使用该网站,因此具体一个时刻只有部分注册用户同时在线,在线用户就在浏览网站时会花很多时间阅读网站上的信息,因而具体一个时刻只有部分在线用户同时向系统发出请求。这样,对于网站系统我们会有三个关于用户数的统计数字:注册用户数、在线用户数和同时发请求用户数。由于注册用户可能长时间不登陆网站,使用注册用户数作为性能指标会造成很大的误差。而在线用户数和同事发请求用户数都可以作为性能指标。相比而言,以在线用户作为性能指标更直观些,而以同时发请求用户数作为性能指标更准确些。

    4. QPS每秒查询率(Query Per Second)

    每秒查询率QPS是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准,在因特网上,作为域名系统服务器的机器的性能经常用每秒查询率来衡量。对应fetches/sec,即每秒的响应请求数,也即是最大吞吐能力。 (看来是类似于TPS,只是应用于特定场景的吞吐量)

    更多关于网站运维的一些专业术语请查看下面的相关链接

    展开全文
  • 什么是QPS、TPS、RT、吞吐量

    千次阅读 2020-10-01 01:15:41
    QPS:Queries Per Second意思是“每秒查询率”,是一台服务器每秒能够相应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。互联网中,作为域名系统服务器的机器的性能经常用每秒查询率...

    一、QPS,每秒查询

    QPS:Queries Per Second意思是“每秒查询率”,是一台服务器每秒能够相应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。互联网中,作为域名系统服务器的机器的性能经常用每秒查询率来衡量。

    二、TPS,每秒事务

    TPS:是TransactionsPerSecond的缩写,也就是事务数/秒。它是软件测试结果的测量单位。一个事务是指一个客户机向服务器发送请求然后服务器做出反应的过程。客户机在发送请求时开始计时,收到服务器响应后结束计时,以此来计算使用的时间和完成的事务个数。QPS vs TPS:QPS基本类似于TPS,但是不同的是,对于一个页面的一次访问,形成一个TPS;但一次页面请求,可能产生多次对服务器的请求,服务器对这些请求,就可计入“QPS”之中。如,访问一个页面会请求服务器2次,一次访问,产生一个“T”,产生2个“Q”。

    三、RT,响应时间

    响应时间:执行一个请求从开始到最后收到响应数据所花费的总体时间,即从客户端发起请求到收到服务器响应结果的时间。响应时间RT(Response-time),是一个系统最重要的指标之一,它的数值大小直接反应了系统的快慢。

    四、并发数

    并发数是指系统同时能处理的请求数量,这个也是反应了系统的负载能力。

    五、吞吐量

    系统的吞吐量(承压能力)与request对CPU的消耗、外部接口、IO等等紧密关联。单个request 对CPU消耗越高,外部系统接口、IO速度越慢,系统吞吐能力越低,反之越高。系统吞吐量几个重要参数:QPS(TPS)、并发数、响应时间。

    1. QPS(TPS):(Query Per Second)每秒钟request/事务 数量
    2. 并发数: 系统同时处理的request/事务数
    3. 响应时间: 一般取平均响应时间

    理解了上面三个要素的意义之后,就能推算出它们之间的关系:

    • QPS(TPS)= 并发数/平均响应时间
    • 并发数 = QPS*平均响应时间

    六、实际举例

    我们通过一个实例来把上面几个概念串起来理解。按二八定律来看,如果每天 80% 的访问集中在 20% 的时间里,这 20% 时间就叫做峰值时间。

    • 公式:( 总PV数 * 80% ) / ( 每天秒数 * 20% ) = 峰值时间每秒请求数(QPS)
    • 机器:峰值时间每秒QPS / 单台机器的QPS = 需要的机器

    1、每天300w PV 的在单台机器上,这台机器需要多少QPS?
    ( 3000000 * 0.8 ) / (86400 * 0.2 ) = 139 (QPS)

    2、如果一台机器的QPS是58,需要几台机器来支持?
    139 / 58 = 3

    七、最佳线程数、QPS、RT

    1、单线程QPS公式:QPS=1000ms/RT
    对同一个系统而言,支持的线程数越多,QPS越高。假设一个RT是80ms,则可以很容易的计算出QPS,QPS = 1000/80 = 12.5
    多线程场景,如果把服务端的线程数提升到2,那么整个系统的QPS则为 2*(1000/80) = 25, 可见QPS随着线程的增加而线性增长,那QPS上不去就加线程呗,听起来很有道理,公司也说的通,但是往往现实并非如此。

    2、QPS和RT的真实关系

    我们想象的QPS、RT关系如下

    img

    实际的QPS、RT关系如下

    img

    3、最佳线程数量
    刚好消耗完服务器的瓶颈资源的临界线程数,公式如下
    最佳线程数量=((线程等待时间+线程cpu时间)/线程cpu时间)* cpu数量
    特性:

    • 在达到最佳线程数的时候,线程数量继续递增,则QPS不变,而响应时间变长,持续递增线程数量,则QPS开始下降。
    • 每个系统都有其最佳线程数量,但是不同状态下,最佳线程数量是会变化的。
    • 瓶颈资源可以是CPU,可以是内存,可以是锁资源,IO资源:超过最佳线程数-导致资源的竞争,超过最佳线程数-响应时间递增。
    展开全文
  • 之前在项目中,有用Kafka来做日志处理,只知道Kafka很适合用来处理日志,它高性能、高吞吐量。那么它是如何做到高性能、高吞吐量的呢? (1)使用了页缓存技术 Kafka 每次接收到数据都会往磁盘上去写,它是基于操作...
  • 网络带宽和吞吐量throughput的关系

    万次阅读 2016-05-09 22:45:11
    但是我们性能测试出来的吞吐量却只有10MB多一点,这是为什么呢? 那就是下面这个公式了: 1MB=8Mb1MB/s=8Mb/s 而Mbps==Mb/s B是Byte,b是bit,1B=8b M是一样的,都是1024×1024p就是“每”的意思,和"/"是一样的,...
  • QPS:Queries Per Second意思是“每秒查询率”,是一台服务器每秒能够相应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。 TPS: 是TransactionsPerSecond的缩写,也就是事务数/秒。它...
  • 其实操作系统本身有一层缓存,叫做page cache是在内存里的缓存,我们也可以称之为os cache ,意思就是操作系统自己管理的缓存,在写入磁盘文件是,先直接写入os cache,然后在有操作系统决定什么时候刷新到磁盘文件中...
  • 但实际上,我认为是这是每个程序员必懂的知识点了,你可以搞不懂它们怎么计算的,但是你最少要知道它们分别代表什么意思吧?! QPS QPS:全名 Queries Per Second,意思是“每秒查询率”,是一台服务器每秒能够响应...
  • 什么是PV? 访问,Page View, 指网站页面浏览或者点击,页面被刷新一次就计算一次。如果网站被刷新了1000次,那么流量统计工具显示的PV就是1000 。 什么是UV?...QPS:Queries Per Second,意思.
  • GC(Garbage Collection)是各大语言的宠儿,也是计算机科学...从最早的串行到高顿吞吐量的并行,为了解决高延迟又演化出了CMS(Concurrent Mark Sweep),为了解决碎片的问题,又开发了G1.为什么我们需要进行GC呢在早期...
  • raid是什么意思

    2009-11-27 18:30:48
    不会受到损坏硬盘的影响...盘的性能和吞吐量。RAID 0没有冗余或错误修复能力,成本低,要求至少两个磁盘,一般只是在那些对数 据安全性要求不高的情况下才被使用。 (1)、RAID 0最简单方式 就是把x块同样...
  • bps和pps作为衡量网络吞吐量的单位,从功能上而言两者没有区别。 但是,两者的使用环境截然不同。 bps bit per second的缩写。也可以表示成b/s。这是此类单位的最小单位。 就现在的网络环境而言,常用的单位有Kb/s,...
  • IO有四种类型:连续读,随机读,随机写和连续写,连续读写的IO size通常比较大(128KB-1MB),主要衡量吞吐量,而随机读写的IO size比较小(小于8KB),主要衡量IOPS和响应时间。数据库中的全表扫描是连续读IO,索引访问...
  • 索引类似大学图书馆建书目索引,可以提高数据检索的效率,降低数据库的IO成本。MySQL在300万条记录左右性能开始逐渐下降,虽然官方...如网络速度慢,内存不足,I/O吞吐量小,磁盘空间满了等。2.没有索引或者索引失效...
  • 区块链技术发展到目前,常常被人所诟病的是吞吐量低,处理速度慢。尤其是在区块链技术运用最为广泛的金融领域,在传统互联网中本可以更高效、更迅速的完成的交易量,而到了区块链技术上反而常常会引起网络拥堵、崩溃...
  • 负载均衡,建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。2.负载均衡,英文名称为Load Balance,其意思就是...
  • UV打印机多使用工业喷头,喷头...因为打印头是静止不动的,所以可以潜在地放置大量的流体,从而实现更高的墨水吞吐量。扫描打印机可以通过打印头的多次来回运动以达到强化打印质量的目的,而与之不同的 single-pass...
  • 目录锁类型可中断锁在等待获取锁过程中可中断Lock就是可中断锁公平锁/非公平锁公平锁是指多个线程按照申请锁的顺序来获取锁。非公平锁是指多个线程获取锁的顺序...非公平锁的优点在于吞吐量比公平锁大。对于Synchro...
  • 4、吞吐量(Throughput) 5、PV(Page View) 6、UV(Unique Visitor) 7、Load(系统负载) 三、结束 一、概述 分布式、微服务、Service Mesh目前都是大家耳熟能详的词语了,现在随便一个互联网公司说出来...
  • 当年比特币被创造出来的时候, 最主要的是解决两个问题: 1. 如何在一个没有身份认证的系统中解决分布式共识问题;... 其中一个最最最让人惦记的问题就是比特币的交易吞吐量太小了.虽然现在侧链技术...
  • 什么是负载均衡

    2019-09-17 08:44:14
    负载均衡 建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。 负载均衡,英文名称为Load Balance,其意思就是分摊...
  • 负载均衡是什么

    2019-08-13 10:41:00
    负载均衡建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。 负载均衡(Load Balance)其意思就是分摊到多个操作...
  • 负载均衡建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。 负载均衡(Load Balance)其意思就是分摊到多个操作...
  • MIMO,MIMO是什么意思,什么是MIMO无线通信技术 MIMO(Multiple-Input Multiple-Out-put)系统是一项考虑用于802.11n的技术。802.11n是下一代802.11标准,可将吞吐量提高到100Mbps。同时,专有MIMO技术可改进已有802.11...
  • 什么需要敏捷编程?

    2018-10-13 22:29:01
    敏捷编程是比传统工作...它被使用的原因是它让项目的各个成员都处在工作状态,因为传统工作模式里测试是要等待开发完成工作后才能测试的,一次产品的更新的时间越短,测试开始工作的时间就越早,团队吞吐量就越高。...

空空如也

空空如也

1 2 3 4 5 ... 8
收藏数 145
精华内容 58
关键字:

吞吐量什么意思