我有一台运行 celery 任务的服务器。它使用 运行几个工作线程celery multi start 2
,使用 进行配置systemd
。有时,它会超负荷工作并达到 100% CPU。当这种情况发生时,一切都会完全锁定:我无法通过 ssh 进入机器,任务本身停止工作(例如,我可以从另一台机器上看到数据库中不再创建记录)。
工作线程在我的 systemd 配置中运行Nice=2
。
为什么 CPU 问题会导致机器锁定?(我很确定这不是内存问题,因为当机器内存不足时,它只会杀死工作线程)。有什么方法可以阻止这种情况发生吗?我宁愿不杀死任务,而是暂停工作线程,直到机器再次拥有足够的资源。
实例类型为t2.medium。