ActiveMQ性能测试

我们使用ActiveMQ作为消息传递层–发送大量需要低延迟的消息。 通常它可以正常工作,但是在某些情况下我们遇到了性能问题。 在花了太多时间测试我们的基础架构之后,我想我已经学到了有关ActiveMQ的一些有趣的东西:它可能真的很慢。

尽管一般来说,消息通过ActiveMQ传输不会出现问题,但是我们注意到,当我们收到大量消息时,就会开始看到延迟。 好像我们正在达到某个消息速率限制–当我们超过该消息速率限制时,消息将被延迟,仅在该限制处传递。 从ActiveMQ贴上消息的时间戳起,我们可以看到代理正在快速接受消息,但是发送给使用者的时间有所延迟。

我设置了一个测试工具来复制问题-这很容易。 但是,我在测试系统中测得的吞吐量似乎很低:每秒2500条消息。 对于一个非常简单的消费者而言,基本上什么也不做,因此没有理由将吞吐量如此之低。 为了进行比较,在完全相同的设置中使用定制的消息传递层,我们达到了每秒15,000条消息。 第二个难题是在生产中,我们看到的消息速率仅为250消息/秒。 为什么测试系统比生产系统快10倍?

我开始尝试消除可能性:

  • ActiveMQ上的并发负载没有区别
  • 更改生产者流量控制设置没有影响
  • 更改使用者的预取限制只会使行为变得更糟(我们将数据写入非持久性主题,因此默认的预取限制很高)
  • 似乎没有组件受到带宽或CPU限制

作为实验,我尝试将使用者与代理人和生产者移动到同一台服务器上:消息吞吐量增加了一倍。 将使用者移动到具有更高ping时间的服务器上:消息吞吐量骤降。

这导致了一种洞察力:ActiveMQ代理的行为恰好好像“一次”发送给消费者的数据量受到限制。 我特别意识到,网络上未确认的数据量似乎受到限制。 如果连线较长,则数据到达使用者的时间更长,而确认返回的时间也更长:因此,代理每秒发送较少的数据。

ActiveMQ

这种行为突出了我们的第一个错误。 我们使用Spring Integration处理用户端的消息路由,在一年前对Spring进行了升级,我们在该版本中获得的更改之一是对消息驱动通道适配器确认JMS消息的方式进行了更改。 以前,我们的消息是自动确认的,但是现在确认模式是“事务处理”的。 这意味着我们必须在将确认发送给代理之前完成整个消息处理链。

这就解释了为什么生产系统(对消息有用的工作)具有比测试系统低得多的数据速率。 不仅是消息必须经过1毫秒的ping时间,消费者还没有发送完确认消息,直到消费者完成了对消息的处理,这可能还要花费几毫秒的时间。

但是更糟糕的是,交易确认似乎完全阻止了用户预取数据! 我们通过事务确认看到的吞吐量是一次在线上一个未确认的消息。 如果我们将消费者移到更远的地方,我们的吞吐量将直线下降。 即,代理在收到之前的确认之前不会发送新消息。 与其代替消费者从经纪人那里预取数百条消息并依次处理它们,而是经纪人耐心地一次发送一条消息! 难怪我们的表现糟透了。

通过spring集成配置更改可以轻松解决此问题。 在测试系统中,我们的消息吞吐量从2500消息/秒增加到10,000消息/秒。 不错的进步。

但是我很好奇,我们仍然会看到经纪人的行为,好像网上未确认数据的数量受到限制吗? 因此,我将使用者转移到相距较远的服务器上进行测试。 结果? 是! 代理仍会限制网络上未确认的数据量。 即使自动确认了消息,对于代理将发送而没有看到确认的数据量也有一个硬性上限。

帽子的大小呢? 约64KB。 是的,在2018年,我的消息传递层一次只能传输64KB的数据。 当经纪人和消费者超级亲密时,这很好。 但是,将消费者与代理之间的ping时间增加到10ms,我们的消息速率将下降到5,000消息/秒。 在100毫秒的往返行程中,我们的消息速率为500消息/秒。

这种行为感觉就像应该控制预取限制:但是,我们看到的消息(不超过60条1kB消息)比预取限制所暗示的要少得多。 到目前为止,我还没有找到关于“消费者窗口大小”是否存在的任何确认。 也没有任何特别修改行为的方法。 使用方上TCP套接字缓冲区大小的增加将传输中的数据量增加到大约80KB,但没有增加。

我很困惑,很多人使用ActiveMQ,而且肯定有人会注意到像这样的数据上限吗? 但是,也许大多数人使用ActiveMQ的消费者和经纪人之间的ping时间非常短,根本就不会注意到它?

但是,人们必须在全球分布式部署中使用ActiveMQ –为什么没人能看到这一点?

翻译自: https://www.javacodegeeks.com/2018/09/activemq-performance-testing.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/345863.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机网络严楠,安徽工程大学

安徽工程大学是一所以工为主的省属多科性高等院校,是安徽省高校综合改革首批试点院校、安徽省系统推进全面创新改革试验高校创新自主权改革试点单位,入选教育部新工科研究与实践项目。 学校办学历史始于1935年创设的安徽私立内思高级工校,历经…

垃圾收集算法,垃圾收集器_垃圾收集器准则和提示

垃圾收集算法,垃圾收集器这些是我需要调整GC时通常会看到的一些准则和技巧。 主要由以下两本书组成,而根据我的经验却很少: Java性能 JBoss AS 5性能调优 希望它们对在那里的其他人有用! 垃圾收集器 XX:AggressiveOpts将HotSpot内部布尔变…

3SAT问题

3-Satisfiability (3Sat) https://samjjx.github.io/2019/03/14/3sat2ds/

Java,JavaFX的流利设计风格文本字段和密码字段

我刚刚发布了Java版本4.5 ,JavaFX主题JMetro 。 此版本为“文本字段”和“密码字段”添加了新样式。 和往常一样,受到Fluent Design的启发。 在这篇文章中,我将详细介绍这个新版本。 JMetro版本4.5 就像我在简介中所说的那样,JM…

零空间,Markov‘s inequality, Chebyshev Chernoff Bound, Union Bound

0. 零空间 零空间是在线性映射(即矩阵)的背景下出现的,指:像为零的原像空间,即{x| Ax0}。 在数学中,一个算子 A 的零空间是方程 Av 0 的所有解 v 的集合。它也叫做 A 的核,核空间。如果算子是…

prd展示html文件,prd目的.html

PRD目的$axure.utils.getTransparentGifPath function() { return resources/images/transparent.gif; };$axure.utils.getOtherPath function() { return resources/Other.html; };$axure.utils.getReloadPath function() { return resources/reload.html; };业务优先于需求…

连续、偏导数、可微

1 连续的含义 通俗来说,用笔作画,不提笔画出来的曲线就是连续的: 1.1 没有缝隙 我们对连续的函数曲线的直观感受是没有缝隙: 1.2 另一层含义 2 可微的含义 可微可导的几何意义 对于一元函数,可微的几何意义是该点处存在切…

齐次(Homogeneous)、单项式、多项式

齐次 所谓的「齐」,必然是有两个或者以上的对象,那么就以两个对象x,yx,yx,y为例。 齐次,是指所列的式子只和Xn,ynX^n, y^nXn,yn相关,不存在Xm,yl(m≠n,l≠n)X^m, y^l (m \neq n, l \neq n)Xm,yl(m​n,l​n)的项,包…

spring mail 发送html simple,SpringBoot整合Mail邮件发送

Spring提供了非常好用的JavaMailSender接口实现邮件发送。在Spring Boot的Starter模块中也为此提供了自动化配置。添加依赖org.springframework.bootspring-boot-starter-mail配置application.yml文件spring:mail:host: smtp.qq.com# 你的邮箱授权码password:nickname: # 该参数…

二次型、特征值/向量、奇异值、特征值、奇异值分解、奇异值分解(SVD)原理与在降维中的应用

一、二次型 通过矩阵来研究二次函数(方程),这就是线性代数中二次型的重点。 1 二次函数(方程)的特点 1.1 二次函数 最简单的一元二次函数就是: 给它增加一次项不会改变形状: 增加常数项就…

2021年最受欢迎的微信公众号推广方式

时下,微信公众平台已成为热门的营销推广平台,大家都对微信非常重视,有的礼品企业甚至推出N个公共号,抽调专门人手系统运营。每天,都有大量礼品企业使用公众账号通过移动端和粉丝互动,不仅可以群发文字、图片…

计算机应用与软件是csci吗,计算机与信息技术学院

鲁凌云职 称: 副教授学 位:博士邮 箱:lylubjtu.edu.cn办公电话:个人主页:个人履历鲁凌云 (副教授、博士生导师)毕业院校: 北京交通大学最后学位: 工学博士研究方向:无线跨层资源管理…

期望、方差

一、期望和方差的定义 随机变量(Random Variable) X 是一个映射,把随机试验的结果与实数建立起了一一对应的关系。而期望与方差是随机变量的两个重要的数字特征。 1. 期望(Expectation, or expected value) 期望是度量一个随机变量取值的集中位置或平均水平的最基…

【数据结构】图

一.图的定义 1.定义: 图G由顶点集V和关系集E组成,记为G(V,E) 注:图可以没有边,但不能没有顶点。 2.图的分类: 图的顶点数为n,边数为e 有向图: 无向图&a…

非负矩阵之Perron-Frobenius定理

1. 矩阵论记号约定 2. 非负矩阵之Perron-Frobenius定理 1907 年 O. Perron 发现正矩阵的谱有特别有趣的性质。G. Frobenius 在 1908-1912 年间将 Perron 的工作推广到不可约非负矩阵的情形,并得到了新的进一步结果。 Oskar Perron 在1907年发表了关于正矩阵的一些基…

建议把英语改成选修的计算机老师,越来越多的人建议高中将英语作为选修课,而非必修课,您认同吗?...

很多粉丝家人给白老师留言,说英语应该作为选修课,而不是必修课,因为英语学习影响了太多的学生,尤其是那些有真正才华的学生,而且英语学习又不实用,只是为了考试而已,问我是否认同这种说法&#…

hazelcast 使用_使用Hazelcast发布和订阅

hazelcast 使用几周前,我写了一篇有关Hazelcast入门的博客,描述了创建分布式地图,列表和队列是多么简单。 当时我提到,Hazelcast还做很多其他事情。 该博客快速介绍了Hazelcast的另一个功能:基于Publish / Subscribe模…

谱半径

矩阵的谱或叫矩阵的谱半径,在特征值估计、广义逆矩阵、数值分析以及数值代数等理论的建树中,都占有极其重要的地位; 矩阵的谱半径为矩阵的特征值的模的最大值。 关于矩阵的谱(半径)的一个重要性质即是:任意…

矩阵迹(trace), 行列式(determinate)

1. 迹(trace) 矩阵的迹(trace)表示矩阵 A AA 主对角线所有元素的和 迹的来源 最根本的应该就是迹和特征值的和相等。因为特征值如此重要,所以才定义了迹。离开了这一点,我觉得迹也就失去了立足点。 迹…

计算机的四个硬盘有什么区别是什么意思,笔记本的内存和硬盘有什么区别 原来笔记本硬盘有这几种...

之前有很多人分不清笔记本的内存和硬盘有何区别,很容易发生“内存128GB”的笑话,那么到底硬盘和内存有和区别?如何判断内存好坏呢?我想你应该看看这篇文章。笔记本内存内存是PC中的重要一环,是数据存放和交换的空间,所以内存容量…