RabbitMQ工作人员陷入困境,消息未被打包但连接仍然存在

时间:2016-05-20 08:56:37

标签: symfony rabbitmq

我正在使用RabbitMQ开发可扩展系统。我在Symfony2(PHP)中编写了应用程序,php工作者遇到了问题,他们失去了连接。

我从这篇文章中受到启发:https://blog.vandenbrand.org/2015/01/09/symfony2-and-rabbitmq-lessons-learned/

设置我的工作人员并解决PHP工作人员的问题。

默认设置是使用Go编写的worker,它将数据传递给PHP命令行处理程序脚本。实际上它工作得非常好,但是当我用15k消息和6个工作人员进行负载测试时,系统在工作6-10小时后卡住并且消息状态为“未打包”。 RabbitMQ和工人之间的联系还活着。

这是我使用的go工作者(它表现为包装器):https://github.com/ricbra/rabbitmq-cli-consumer

这是此工作人员的配置:

    [rabbitmq]
    host = HOSTNAME
    username = USERNAME
    password = PASSWORD
    vhost=/
    port=5672
    queue=fetch_product_queue
    compression=Off

    [prefetch]
    count=1
    global=Off

    [exchange]
    name=send_product
    type=direct
    autodelete=Off
    durable=On

    [logs]
    error = /tmp/fetch_product_error.log
    info = /tmp/fetch_product_info.log

我相信这不是一个开发问题,但它更可能是一个RabbitMQ配置问题,因为它适用于数千条消息。

Go worker使用此库:streadway / amqp,它支持AMQP 0.9.1。 RabbitMQ服务器版本是3.6.1,默认配置(我不使用配置文件)。

服务器在DigitalOcean中运行,具有2个内核,2 GB RAM。

工作人员被放置在具有512 MB RAM和1个核心的6个DO实例上。 感谢您的帮助。

0 个答案:

没有答案