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

用ActiveMQ Artemis解决集群测试问题

许涵容
2023-03-14

我有两个ActiveMQ Artemis实例,只需使用命令/.Artemis创建Artemis/server1和

/.Artemis创建Artemis/server2

以下是服务器1的broker.xml:

  <acceptors>
     <!-- Acceptor for every supported protocol -->
     <acceptor name="artemis">tcp://0.0.0.0:61616?tcpSendBufferSize=1048576;tcpReceiveBufferSize=1048576;protocols=CORE,AMQP,STOMP,HORNETQ,MQTT,OPENWIRE;useEpoll=true;amqpCredits=1000;amqpLowCredits=300</acceptor>

  </acceptors>

  <connectors>
     <connector name="netty-connector">tcp://localhost:61616</connector>
     <!-- connector to the server1 -->
     <connector name="server1-connector">tcp://localhost:61617</connector>
  </connectors>

 <cluster-connections>
     <cluster-connection name="my-cluster">
        <connector-ref>netty-connector</connector-ref>
        <retry-interval>500</retry-interval>
        <use-duplicate-detection>true</use-duplicate-detection>
        <message-load-balancing>STRICT</message-load-balancing>
        <max-hops>1</max-hops>
        <static-connectors>
           <connector-ref>server1-connector</connector-ref>
        </static-connectors>
     </cluster-connection>
  </cluster-connections>

下面是服务器2的broker.xml:

     <!-- Acceptor for every supported protocol -->
   <acceptor name="artemis">tcp://0.0.0.0:61617?tcpSendBufferSize=1048576;tcpReceiveBufferSize=1048576;protocols=CORE,AMQP,STOMP,HORNETQ,MQTT,OPENWIRE;useEpoll=true;amqpCredits=1000;amqpLowCredits=300</acceptor>
  </acceptors>

  <connectors>
     <connector name="netty-connector">tcp://localhost:61617</connector>
     <!-- connector to the server0 -->
     <connector name="server0-connector">tcp://localhost:61616</connector>
  </connectors>

  <cluster-connections>
     <cluster-connection name="my-cluster">
        <connector-ref>netty-connector</connector-ref>
        <retry-interval>500</retry-interval>
        <use-duplicate-detection>true</use-duplicate-detection>
        <message-load-balancing>STRICT</message-load-balancing>
        <max-hops>1</max-hops>
        <static-connectors>
           <connector-ref>server0-connector</connector-ref>
        </static-connectors>
     </cluster-connection>
  </cluster-connections>

同样在server2中,Bootstrap.xml中的更改更改了web绑定端口

<web bind="http://localhost:8163" path="web">

我正在用StaticClusteredQueueExample和这个示例工作文件测试它。

现在我正在对我的集群运行ActiveMQ Artemis JMeter性能,我正在使用JMeter测试示例,下面是

现在,当我使用Jmeter运行点对点测试时,消费者中的错误率接近50%(Jmeter中的聚合报告),

但是当我在ubantu系统中只运行一个节点(server1或server2)时,它工作得很好,0%的错误率(Jmeter中的聚合报告)。

你能帮我解释一下为什么我在使用docker运行多个实例(节点)时会得到50%的错误率(Jmeter中的聚合报告)吗

共有1个答案

笪德华
2023-03-14

问题是,您将一个示例(即JMeter示例)与一个确实不兼容的集群配置(即来自clustered-statist-discovery示例)混合在一起。

集群 是严格的,这意味着消息将在集群中进行负载平衡,而不管使用者是否存在。此外,默认的 是-1,这意味着由于严格的消息负载平衡类型而发送到集群中其他节点的消息将留在这些节点上,不会根据用户需求进行重新分发。

JMeter示例是在编写时考虑到一个节点,因此它只向一个节点发送消息并使用来自一个节点的消息,这意味着它只接收它发送的消息的一半,因为另一半消息由于配置而被转发到集群中的另一个节点。

如果将 更改为ON_DEMAND,则不会看到任何错误,因为所有消息都将留在特定发送它们的节点上,也是连接使用者的节点。

 类似资料:
  • 本文档介绍如何构建测试场景对 DM 集群进行性能测试,包括数据迁移速度、延迟等。 迁移数据流 可以使用简单的迁移数据流来测试 DM 集群的数据迁移性能,即单个 MySQL 实例到 TiDB 的数据迁移:MySQL -> DM -> TiDB。 部署测试环境 使用 TiUP 部署 TiDB 测试集群,所有配置使用 TiUP 提供的默认配置。 部署 MySQL 服务,开启 ROW 模式 binlog,

  • 本文向大家介绍MySQL slave_net_timeout参数解决的一个集群问题案例,包括了MySQL slave_net_timeout参数解决的一个集群问题案例的使用技巧和注意事项,需要的朋友参考一下 【背景】    对一套数据库集群进行5.5升级到5.6之后,alter.log 报warning异常。    数据库业务压力  qps 1 tps 几乎为0  4-10 秒或者更久会有写入操作

  • 本文向大家介绍详解nginx惊群问题的解决方式,包括了详解nginx惊群问题的解决方式的使用技巧和注意事项,需要的朋友参考一下 对于nginx的惊群问题,我们首先需要理解的是,在nginx启动过程中,master进程会监听配置文件中指定的各个端口,然后master进程就会调用fork()方法创建各个子进程,根据进程的工作原理,子进程是会继承父进程的全部内存数据以及监听的端口的,也就是说worker

  • 本文向大家介绍Python测试Kafka集群(pykafka)实例,包括了Python测试Kafka集群(pykafka)实例的使用技巧和注意事项,需要的朋友参考一下 生产者代码: 消费者代码: 以上这篇Python测试Kafka集群(pykafka)实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。

  • 准备 测试环境 在以下几种环境下进行测试: Kubernetes集群node节点上通过Cluster IP方式访问 Kubernetes集群内部通过service访问 Kubernetes集群外部通过traefik ingress暴露的地址访问 测试地址 Cluster IP: 10.254.149.31 Service Port:8000 Ingress Host:traefik.sample-

  • 第一次使用 kubectl 访问 如果您是第一次访问 Kubernetes API 的话,我们建议您使用 Kubernetes 命令行工具:kubectl。 为了访问集群,您需要知道集群的地址,并且需要有访问它的凭证。通常,如果您完成了入门指南那么这些将会自动设置,或者其他人为您部署的集群提供并给您凭证和集群地址。 使用下面的命令检查 kubectl 已知的集群的地址和凭证: $ kubectl