AMQP消费者将CPU加载到100%

时间:2015-01-02 09:17:10

标签: symfony rabbitmq consumer

我安装了RabbitMQBundle的Symfony2应用程序。我已根据捆绑文档中的描述设置了消费者和生产者,一切正常。但我的消费者开始使用 ./ app / console rabbitmq:consumer 获取所有可用的CPU时间。基本上,消费者只会等待消息并输出消息。如果我从php-amqplib启动演示消费者,CPU消耗几乎为零。我尝试了不同的Symfony(2.6和2.3),但这并不影响CPU负载。我的服务器配置:

  1. Debian 7
  2. PHP 5.6.4(也尝试过5.4)
  3. 没有使用数据库
  4. RabbitMq 3.4.2
  5. 有没有办法减少CPU消耗?感谢

1 个答案:

答案 0 :(得分:0)

刚遇到一个非常类似的问题,经过一些调试后意识到我正在使用一种旧方法来实例化与rabbitmq的连接。

此处描述了该方法的新签名:https://github.com/videlalvaro/php-amqplib/blob/master/PhpAmqpLib/Connection/AbstractConnection.php#L136

我发送的内容更像是

$this->connection = new Connection\AMQPConnection(
    $server->host,
    $server->port,
    $server->user,
    $server->password,
    $server->vhost,
    $server->insist,
    $server->login_method,
    $server->locale,
    $server->connection_timeout,
    $server->read_write_timeout,
    $server->context,
    $server->keepalive,
    $server->heartbeat
);

根据版本2中某处的一个非常古老的定义。https://github.com/videlalvaro/php-amqplib/blob/v2.0.0/PhpAmqpLib/Connection/AMQPConnection.php#L31

所以你的插件似乎使用了新版本的库,但没有使用新方法来启动连接。