Symfony RabbitMQ工作线程被卡住,消息未确认,但连接处于活动状态

Symfony RabbitMQ工作线程被卡住,消息未确认,但连接处于活动状态,symfony,rabbitmq,Symfony,Rabbitmq,我正在用RabbitMQ开发可伸缩系统。我用Symfony2(PHP)编写应用程序,PHP工作人员遇到问题,他们失去了连接 这篇文章启发了我: 设置我的工作人员并解决PHP工作人员的问题 默认设置是使用Go编写的worker,它将数据传递给PHP命令行处理程序脚本。实际上,它工作得很好,但当我对15k条消息和6名工作人员执行负载测试时,系统在工作6-10个小时后卡住,消息状态为“未确认”。RabbitMQ和工作进程之间的连接处于活动状态 这是我使用的go worker(其行为类似于包装): 这是

我正在用RabbitMQ开发可伸缩系统。我用Symfony2(PHP)编写应用程序,PHP工作人员遇到问题,他们失去了连接

这篇文章启发了我:

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

默认设置是使用Go编写的worker,它将数据传递给PHP命令行处理程序脚本。实际上,它工作得很好,但当我对15k条消息和6名工作人员执行负载测试时,系统在工作6-10个小时后卡住,消息状态为“未确认”。RabbitMQ和工作进程之间的连接处于活动状态

这是我使用的go worker(其行为类似于包装):

这是此工作程序的配置:

    [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

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

听起来您在邮件发送时没有确认邮件,导致邮件被重新发送,并导致RabbitMQ耗尽ram。检查此项并搜索遗忘的确认谢谢@NikolayManolov,这似乎是一个应用程序错误。目前,作为一种额外的方法,我每隔2小时使用cron重新启动worker(我使用supervisord管理worker进程)。听起来您在传递消息时没有确认消息,导致消息重新传递,并导致RabbitMQ耗尽ram。检查此项并搜索遗忘的确认谢谢@NikolayManolov,这似乎是一个应用程序错误。目前,作为一种附加方法,我每隔2小时使用cron重新启动worker(我使用supervisord管理worker进程)。