精华内容
下载资源
问答
  • 吞吐量什么意思 这篇文章灵感来自于在内存管理术语中“ 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和系统吞吐量的区别和理解

    万次阅读 多人点赞 2018-10-21 21:36:21
    QPS:Queries Per Second意思是“每秒查询率”,是一台服务器每秒能够相应查询次数,是对一个特定查询服务器在规定时间内所处理流量多少衡量标准。 TPS:是TransactionsPerSecond缩写,也就是事务数/秒。它...

    一、QPS/TPS

    QPS:Queries Per Second意思是“每秒查询率”,是一台服务器每秒能够相应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。

    TPS:是TransactionsPerSecond的缩写,也就是事务数/秒。它是软件测试结果的测量单位。一个事务是指一个客户机向服务器发送请求然后服务器做出反应的过程。客户机在发送请求时开始计时,收到服务器响应后结束计时,以此来计算使用的时间和完成的事务个数。

    Tps即每秒处理事务数,包括了

    1)用户请求服务器

    2)服务器自己的内部处理

    3)服务器返回给用户

    这三个过程,每秒能够完成N个这三个过程,Tps也就是N;

    Qps基本类似于Tps,但是不同的是,对于一个页面的一次访问,形成一个Tps;但一次页面请求,可能产生多次对服务器的请求,服务器对这些请求,就可计入“Qps”之中。

    例如:访问一个页面会请求服务器3次,一次放,产生一个“T”,产生3个“Q” 

    二、系统吞吐量

    一个系统的吞度量(承压能力)与request对CPU的消耗、外部接口、IO等等紧密关联。单个reqeust 对CPU消耗越高,外部系统接口、IO影响速度越慢,系统吞吐能力越低,反之越高。

    系统吞吐量几个重要参数:QPS(TPS)、并发数、响应时间

            QPS(TPS):每秒钟request/事务 数量

            并发数: 系统同时处理的request/事务数

            响应时间:  一般取平均响应时间

    理解了上面三个要素的意义之后,就能推算出它们之间的关系:
    QPS(TPS)= 并发数/平均响应时间    或者   并发数 = QPS*平均响应时间

    参考文章

    TPS和QPS的区别和理解

    系统吞吐量、TPS(QPS)、用户并发量、性能测试概念和公式

    展开全文
  • jmeter简介:   Apache JMeter是100%纯java桌面应用程序,被设计用来测试客户端/服务器结构软件...JMeter可以用来在一个服务器、网络或者对象上模拟重负载来测试它强度或者分析在不同负载类型下全面性能。
      jmeter简介:  
        Apache JMeter是100%纯java桌面应用程序,被设计用来测试客户端/服务器结构的软件(例如web应用程序)。它可以用来测试包括基于静态和动态资源程序的性能,例如静态文件,Java Servlets,Java 对象,数据库,FTP 服务器等等。JMeter可以用来在一个服务器、网络或者对象上模拟重负载来测试它的强度或者分析在不同的负载类型下的全面性能。 
    另外,JMeter能够通过让你们用断言创建测试脚本来验证我们的应用程序是否返回了我们期望的结果,从而帮助我们回归测试我们的程序。为了最大的灵活性,JMeter允许我们使用正则表达式创建断言。 
          jmeter 测试结果中包括样本数目,最新样本,平均,偏离,吞吐量,中值,下面将详细介绍他们的意思 
          样本数目:是指在测试过程中,总共向服务器发出的请求数目。成功的情况下等于你设定的并发数目×循环次数 
          最新样本:他是代表时间的,表示服务器响应最后一个请求的时间。 
          吞吐量   : 表示服务器每分钟处理的请求数目。 
          平均值   : 总的运行时间除以发送到服务器的请求数目; 
          偏离      : 服务器响应时间变化、离散程度测量值的大小,或者,换句话说,就是数据的分布。 
           中值      :  时间的数字,有一半的服务器响应时间低于该值而另一半高于该值。 
    展开全文
  • TPS和吞吐量的关系

    2020-03-13 10:56:35
    QPS:Queries Per Second意思是“每秒查询率”,是一台服务器每秒能够相应查询次数,是对一个特定查询服务器在规定时间内所处理流量多少衡量标准。 TPS:是TransactionsPerSecond缩写,也就是事务数/秒。它...
  • 网络带宽和吞吐量throughput关系

    万次阅读 2016-05-09 22:45:11
    网络带宽和吞吐量的关系---网络瓶颈不可忽视 一般网络带宽是Mbps为单位,这里我们举例:网络带宽为100Mbps 但是我们性能测试出来的吞吐量却只有10MB多一点,这是为什么呢? 那就是下面这个公式了: 1MB=8Mb1MB/s...
  • 主要介绍了TPS(吞吐量)、QPS(每秒查询率)、并发数、RT(响应时间)是什么意思,需要朋友可以参考下
  • 如下图是一个吞吐量的测试结果图(Throughput): 吞吐量的单位是 Bytes/sec 中文的意思就是比特每秒,它表示网络传输速度的大小。 比如: 31000000 bytes/sec = 31000000 / 1024 = 30273.44 k/s = 30273.44/1024 = ...
  • 1. 响应时间(RT)响应时间是指系统对请求作出响应时间。直观上看,这个指标与人对软件性能主观感受是非常一致,因为它完整地记录了整个计算机系统处理请求时间。由于一个系统通常会提供许多功能,而不同功能...
  • QPS:Queries Per Second,意思是“每秒查询率”,是一台服务器每秒能够响应查询次数,是对一个特定查询服务器(比如是读写分离架构,就是读服务器)在规定时间内所处理流量多少衡量标准。 TPS:...
  • 那么它是如何做到高性能、高吞吐量的呢? (1)使用了页缓存技术 Kafka 每次接收到数据都会往磁盘上去写,它是基于操作系统的页缓存来实现文件写入的 操作系统本身有一层缓存,叫做 Page Cache,是在内存里的缓存,...
  • 理解QPS、TPS、并发量、吞吐量

    千次阅读 2019-07-31 16:13:34
    先说我们最熟悉【并发】:就是同时访问同一服务器链接数。 也可以说是:系统同时处理request数量 QPS:Queries Per Second(字面意思为:查询每秒) 官方解释为:每秒查询率:是对一个特定查询服务器...
  • 其实操作系统本身有一层缓存,叫做page cache是在内存里缓存,我们也可以称之为os cache ,意思就是操作系统自己管理缓存,在写入磁盘文件是,先直接写入os cache,然后在有操作系统决定什么时候刷新到磁盘文件中...
  • 系统吞吐量、TPS(QPS)、用户并发量、性能测试概念和公式 QPS吞吐量 【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> QPS:Queries Per Second意思是“每秒查询率”,是一台服务器每秒能够相应...
  • 很多人将上面两个概念理解成相同的意思,让我很困惑,查了很多文章大体都是一个意思。如果是它们没有区别,那对同一事物作出两个不一样的解释,这种逻辑不符合常理,必定有其细分的地方。 所以我理解的...
  • 一、QPS/TPSQPS:Queries Per Second意思是“每秒查询率”,是一台服务器每秒能够相应查询次数,是对一个特定查询服务器在规定时间内所处理流量多少衡量标准。TPS:是TransactionsPerSecond缩写,也就是事务...
  • 一、QPS/TPSQPS:Queries Per Second意思是“每秒查询率”,是一台服务器每秒能够相应查询次数,是对一个特定查询服务器在规定时间内所处理流量多少衡量标准。TPS:是TransactionsPerSecond缩写,也就是事务...
  • Queries Per Second意思是“每秒查询率”,是一台服务器每秒能够相应查询次数,是对一个特定查询服务器在规定时间内所处理流量多少衡量标准。 QPS = req/sec = 请求数/秒。它代表是服务器机器性能最大...
  • Percent Executions 下 Throghput 意思是跑总线程百分之多少。 如 10线程循环一次, Throghput 设置为80,则有8个线程会跑这个请求 Total Executions 下Throghput 意思是跑总线程多少个线程。 如 10线程...
  • 什么是PV? 访问,Page View, 指网站页面浏览或者点击,页面被刷新一次就计算一次。如果网站被刷新了1000次,那么流量统计工具显示PV就是1000 。 什么是UV?...QPS:Queries Per Second,意思.

空空如也

空空如也

1 2 3 4 5 ... 18
收藏数 345
精华内容 138
关键字:

吞吐量的意思