我现在正在测试我的芹菜实施超过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可用区.
编辑2:我开始认为记忆问题可能是一个问题.我正在使用t2.micro实例,并且在同一台机器上运行3个芹菜工人(只有1个实例),这也是经纪人,仍然导致心跳未命中和失速.