RabbitMQ 保持连接运行很长时间

Posted

技术标签:

【中文标题】RabbitMQ 保持连接运行很长时间【英文标题】:RabbitMQ keeps connections running for a long time 【发布时间】:2013-06-11 04:46:19 【问题描述】:

我正在使用托管的 RabbitMQ 提供程序,即 CloudAMQP,并在 heroku 上运行 django 应用服务器。在本地环境中,一切似乎都运行良好,但在 CloudAMQP 对与代理的同时连接数有限制的 Heroku 上,连接似乎永远持续存在,最终导致应用程序用尽可用的打开连接。即使订阅者(即 Heroku 工作人员)执行了与早期连接相关的任务,也会发生这种情况。

如果你已经能够成功地将 CloudAMQP 与 Heroku 和 django celery 一起使用,你能发布对你有用的东西吗?

【问题讨论】:

【参考方案1】:

能够通过将BROKER_POOL_LIMIT=0 添加到我的生产设置来解决此问题。

【讨论】:

【参考方案2】:

BROKER_POOL_LIMIT=0 表示您的设置中任何需要连接的部分都将建立连接、执行其操作并断开连接

虽然这有助于空闲设置,但您会发现自己在流量较高期间偶尔会达到 6 个连接限制,因为您只需要 6 个以上的连接就可以让所有东西与 cloudamqp 通信

查看heroku celery exceeding connection limit 了解为什么以及如何修复它

【讨论】:

以上是关于RabbitMQ 保持连接运行很长时间的主要内容,如果未能解决你的问题,请参考以下文章

在 pika / RabbitMQ 中处理长时间运行的任务

让Ubuntu的ssh保持长时间连接

Rabbit-3.6.5 集群部署

保持ssh连接长时间不断开的技巧

如何使用 spring-rabbit 配置 RabbitMQ 连接?

Bigquery Innerjoin 运行了很长时间