我现在正在测试我的celery实施超过3台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个实例),这也是经纪人,仍然导致心跳未命中和停止。