Rabbitmq 3.5.1 发布速度慢
Rabbitmq 3.5.1 slow publish rate
我已经在我的电脑和服务器上使用默认配置设置了 rabbitmq,并注意到 rabbitmq 发布速率有一个奇怪的行为,无论我向 rabbitmq 发布消息的速度有多快,我的电脑上的发布速率都保持在 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();
}
?>
避免每次迭代创建 connection
、channel
和 exchange
。反而
在迭代之前创建它们并在循环之后关闭它们。
它们是昂贵的操作(尤其是 connection
和 channel
)。 connection
和 channel
应该被创建和重用。
$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();
我已经在我的电脑和服务器上使用默认配置设置了 rabbitmq,并注意到 rabbitmq 发布速率有一个奇怪的行为,无论我向 rabbitmq 发布消息的速度有多快,我的电脑上的发布速率都保持在 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();
}
?>
避免每次迭代创建 connection
、channel
和 exchange
。反而
在迭代之前创建它们并在循环之后关闭它们。
它们是昂贵的操作(尤其是 connection
和 channel
)。 connection
和 channel
应该被创建和重用。
$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();