我刚刚升级到芹菜3.1,现在我看到这是我的原木::
on_node_lost - INFO - missed heartbeat from celery@queue_name for every queue/worker in my cluster.
Run Code Online (Sandbox Code Playgroud)
根据文档BROKER_HEARTBEAT默认关闭,我还没有配置它.
我应该明确设置BROKER_HEARTBEAT=0还是其他我应该检查的东西?
这里的讨论在高层讨论了使用标志运行 celery 工人的一些影响--without-hearbeat --without-gossip --without-mingle。
我想知道该--without-heartbeat标志是否会影响工作人员检测代理断开连接和尝试重新连接的能力。celery 文档只是不透明地引用了这些作用于应用层而不是 TCP/IP 层的心跳。好的 - 我真正想知道的是消除这些消息是否会影响我的工作人员的功能 - 特别是检测代理断开连接然后尝试适当地重新连接?
我自己运行了一些快速测试,发现通过标志--without-heartbeat后,工作人员仍然很快检测到代理断开连接(由我关闭 RabbitMQ 实例启动),并且当我重新启动 RabbitMQ 时,他们尝试重新连接到代理并成功完成此操作实例。因此,我的基本测试表明,基本的健康检查和功能不需要心跳。无论如何,它们有什么意义呢?我不清楚,但它们似乎并没有在最基本的层面上对工作人员功能产生影响。
关闭心跳对特定于应用程序的实际影响是什么?
我在芹菜设置中设置了心跳:
BROKER_HEARTBEAT = 10
Run Code Online (Sandbox Code Playgroud)
我还在 RabbitMQ 配置中设置了这个配置值:
'heartbeat' => '10',
Run Code Online (Sandbox Code Playgroud)
但不知何故心跳仍然被禁用:
ubuntu@sync1:~$ sudo rabbitmqctl list_connections name timeout
Listing connections ...
some_address:37781 -> other_address:5672 0
some_address:37782 -> other_address:5672 0
...done.
Run Code Online (Sandbox Code Playgroud)
任何想法我做错了什么?
更新:
所以现在我得到:
ubuntu@sync1:/etc/puppet$ sudo rabbitmqctl list_connections name timeout
Listing connections ...
some_address:41281 -> other_address:5672 10
some_address:41282 -> other_address:5672 10
some_address:41562 -> other_address:5672 0
some_address:41563 -> other_address:5672 0
some_address:41564 -> other_address:5672 0
some_address:41565 -> other_address:5672 0
some_address:41566 -> other_address:5672 0
some_address:41567 -> other_address:5672 0
some_address:41568 -> other_address:5672 0
...done.
Run Code Online (Sandbox Code Playgroud)
我有3台服务器: