芹菜工人失去了心跳,并在Ec2上获得了大量漂移

时间:2014-09-25 22:51:26

标签: rabbitmq celery django-celery

我现在正在测试我的celery实施超过3台ec2机器。我现在对我的实现非常有信心,但是我遇到了实际的工作执行问题。我的测试结构如下:

  • 1 ec2机器被指定为经纪人,也经营芹菜工人
  • 1 ec2机器被指定为客户端(运行客户端芹菜脚本,使用.delay()排队所有任务,也运行芹菜工作者
  • 1 ec2机器纯粹是一名工人。

所有机器都有1名芹菜工人在跑步。之前,我立即收到了消息:

“来自芹菜的大量漂移@ [其他ec2 ip]可能意味着时钟不同步。” 然后将打印以秒为单位的漂移量,这将随着时间的推移而增加。 我也会收到消息:“芹菜@ [其他ec2 ip]错过了心跳。

此时机器的工作量很少,因此ec2中的AutoScaling配置会在CPU使用率非常低(<5%)后自动关闭实例

因此,为了尝试解决这个问题,我尝试使用此命令同步我所有机器的时钟(虽然我认为芹菜处理了这个),该命令是在所有机器启动时执行的:

apt-get -qy install ntp
service ntp start

有了这个,他们都表现良好大约10分钟没有故障,之后我开始错过心跳,我的ec2实例停滞并关闭。奇怪的是,漂移有时会增加然后减少。

有关为何发生这种情况的任何想法?

我正在使用最新版本的芹菜(3.1)和rabbitmq

编辑:应该注意的是,我在ec2上使用us-west-1a和us-west-1c可用区。

EDIT2:我开始认为记忆问题可能是一个问题。我正在使用t2.micro实例,并且在同一台机器上运行3个芹菜工人(只有1个实例),这也是经纪人,仍然导致心跳未命中和停止。

0 个答案:

没有答案