【问题标题】:Rabbitmq 3.5.1 slow publish rateRabbitmq 3.5.1 发布速度慢
【发布时间】:2015-06-07 17:20:55
【问题描述】:

我已经在我的电脑和服务器上使用默认配置设置了 rabbitmq,并注意到 rabbitmq 发布速率的奇怪行为,无论我向 rabbitmq 发布消息的速度有多快,我的 pc 和服务器上的发布速率都保持在 12/s服务器,而这两个系统在ram和cpu的数量上有很大的不同!

出于测试目的,我编写了一个超级简单的代码,将消息发布到 rabbitmq 上的队列,我再次可以看到 12/s 的发布速率!

我认为这太低了,发布率一定要高得多。

我已经测试了持久和瞬时的交换和消息,但结果是一样的。

如何提高发布率?

代码如下:

<?php
    for($i=1;$i<20000;$i++){
    $connection = new AMQPConnection('localhost', 5672, 'guest', 'guest');
        $channel = $connection->channel();
        $channel->exchange_declare('test', 'direct', false, false, false);
        $msg = new AMQPMessage('test '.$i);
        $channel->basic_publish($msg, 'test');
        $channel->close();
        $connection->close();
    }

?>

【问题讨论】:

    标签: php rabbitmq


    【解决方案1】:

    避免在每次迭代时创建 connectionchannelexchange。反而 在迭代之前创建它们并在循环之后关闭它们。

    它们是昂贵的操作(尤其是connectionchannel)。 connectionchannel 应该被创建和重用。

    $connection = new AMQPConnection('localhost', 5672, 'guest', 'guest');
    $channel = $connection->channel();
    $channel->exchange_declare('test', 'direct', false, false, false);
    
    for($i=1;$i<20000;$i++){
        $msg = new AMQPMessage('test '.$i);
        $channel->basic_publish($msg, 'test');
    }
    $channel->close();
    $connection->close();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-06
      • 1970-01-01
      • 2014-03-31
      • 2011-05-04
      • 2017-03-15
      • 2010-12-24
      • 1970-01-01
      • 2019-12-06
      相关资源
      最近更新 更多