当前位置: 首页 > 知识库问答 >
问题:

分页后ActiveMQ Artemis性能下降

孟均
2023-03-14

在代理切换到分页模式后,我看到性能出现了奇怪的下降。一些消息开始花很长时间: 1800

我还看到了大量磁盘使用情况:

我的broker.xml

<configuration>
   <core xmlns="urn:activemq:core" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="urn:activemq:core ">
         
      <thread-pool-max-size>50</thread-pool-max-size>
      <name>0.0.0.0</name>


      <persistence-enabled>true</persistence-enabled>

      <journal-type>ASYNCIO</journal-type>

      <paging-directory>data/paging</paging-directory>

      <bindings-directory>data/bindings</bindings-directory>

      <journal-directory>data/journal</journal-directory>

      <large-messages-directory>data/large-messages</large-messages-directory>

      <journal-datasync>true</journal-datasync>

      <journal-min-files>2</journal-min-files>

      <journal-pool-files>10</journal-pool-files>

      <journal-file-size>10M</journal-file-size>

      <journal-buffer-timeout>16000</journal-buffer-timeout>

      <journal-max-io>4096</journal-max-io>
      
      <disk-scan-period>5000</disk-scan-period>

      <max-disk-usage>90</max-disk-usage>

      <critical-analyzer>true</critical-analyzer>

      <critical-analyzer-timeout>120000</critical-analyzer-timeout>

      <critical-analyzer-check-period>60000</critical-analyzer-check-period>

      <critical-analyzer-policy>HALT</critical-analyzer-policy>


      <acceptors>

         <acceptor name="artemis">tcp://0.0.0.0:61616?tcpSendBufferSize=1048576;tcpReceiveBufferSize=1048576;protocols=CORE,AMQP;useEpoll=true;</acceptor>

         <acceptor name="amqp">tcp://0.0.0.0:5672?tcpSendBufferSize=1048576;tcpReceiveBufferSize=1048576;protocols=AMQP;useEpoll=true;amqpCredits=1000;amqpLowCredits=300</acceptor>

      </acceptors>
   </core>
</configuration>

Linux Astra、4 CPU 24GB ram 50GB SSD、ActiveMQ Artemis 2.7.0

只有代理重启有帮助

共有1个答案

桓兴腾
2023-03-14

分页时,性能可能会下降。这是因为消息被传呼到磁盘或从磁盘传回,而不是直接从RAM访问。即使是最快的磁盘也比RAM慢得多,因此分页会降低性能。

有几种方法可以缓解这种性能下降:

  • 为代理的JVM提供足够的堆空间,以避免分页
  • 使用流控制来防止在代理上过度累积消息,从而导致分页
  • 确保消息消耗与消息生成保持同步,以防止在代理上过度累积消息,从而导致分页(例如,添加更多使用者,提高现有使用者的性能,等等)
  • 使用高速SSD,而不是较慢的传统HDD

我的猜测是,您使用的大多是非持久性消息,因此重新启动代理会清除这些消息,并消除分页的需要,从而恢复正常性能

另外,由于您使用了ActiveMQ Artemis 2.7.0,我强烈建议您升级到最新版本。自2.7.0发布以来,已经有两年多了,在以后的版本中已经实现了许多错误修复和新功能。

 类似资料:
  • 我的是: 编辑:最关键的问题是,一旦分页启动,broker将无法恢复到原来的性能,即使大部分消息都被消耗掉了。

  • 好吧,这很烦人,我真的不知道该怎么解决,所以事情是这样的。 获得了一个返回分页数据的应用程序,如下所示: 检索结果需要花费很长时间。 但是,如果我调用like(使用上面安装的相同可分页对象): 并且存储库上有: 而且,结果马上就会出现。 我假设,对于第一种永远需要的情况,Spring首先检索所有数据(不限制行),然后返回一个带有结果数量信息的页面。 不知道是否与注释有关。 我使用的是2.3.0。顺

  • 对于大多数网站(尤其是博客),当文章越来越多的时候,就会有分页显示文章列表的需求。Jekyll 已经自建分页功能,你只需要根据约定放置文件即可。 在 Jekyll 3 中,需要在 gems 中安装 jekyll-paginate 插件,并添加到你的 Gemfile 和 _config.yml 中。在 Jekyll 2 中,分页是标准功能。 分页功能只支持 HTML 文件 Jekyll 的分页功能不

  • 在Jpa QueryDsl中,我似乎可以使用如下分页: 问题是: null

  • 当我从Netty 3升级到Netty 4时,性能下降了大约45%。 我在进行性能测试时比较了 Netty 3 和 Netty 4 的线程转储。Netty 4 服务器似乎将更多时间用于写入操作。但是,如果我使用基于Netty 4的客户端和基于Netty 3的服务器,则性能下降仅为5%左右,因此我猜原因是在服务器端,但我找不到原因。 有人能给我建议吗? 代码可以在以下URL中看到:https://co

  • 本文向大家介绍ASP.NET和MSSQL高性能分页实例代码,包括了ASP.NET和MSSQL高性能分页实例代码的使用技巧和注意事项,需要的朋友参考一下 首先是存储过程,只取出我需要的那段数据,如果页数超过数据总数,自动返回最后一页的纪录: 然后是分页控件(... 为省略的生成HTML代码方法): 调用方法: