Concurrency 芹菜仅使用20%的Cpu(峰值)
我正在运行芹菜+兔子MQ应用程序。我启动了一堆ec2机器,但我发现我的芹菜工人机器只使用大约15%的cpu(峰值为20%)。我已经为每台机器配置了2名芹菜工人 芹菜工人不应该接近使用100%的CPU利用率吗Concurrency 芹菜仅使用20%的Cpu(峰值),concurrency,rabbitmq,load,celery,cpu,Concurrency,Rabbitmq,Load,Celery,Cpu,我正在运行芹菜+兔子MQ应用程序。我启动了一堆ec2机器,但我发现我的芹菜工人机器只使用大约15%的cpu(峰值为20%)。我已经为每台机器配置了2名芹菜工人 芹菜工人不应该接近使用100%的CPU利用率吗 更多信息:我没有使用芹菜——并发选项或eventlet,即使我使用了多个worker。默认情况下,并发性设置为8。我的任务在php中运行,主要是io阻塞,所以如果我们有更多的进程并行运行,就不会有问题。有没有办法根据CPU使用情况将芹菜配置为运行更多的任务?您有两个选择:增加(使用--con
更多信息:我没有使用芹菜——并发选项或eventlet,即使我使用了多个worker。默认情况下,并发性设置为8。我的任务在php中运行,主要是io阻塞,所以如果我们有更多的进程并行运行,就不会有问题。有没有办法根据CPU使用情况将芹菜配置为运行更多的任务?您有两个选择:增加(使用--concurrency)或使用(不推荐使用)。大多数情况下,我们在AWS上过度使用并发设置数,即2*N,其中N是您选择的实例类型上的VCPU数。我们不会过度使用订阅了特殊队列的节点,在该队列中我们发送CPU限制的任务。芹菜工人不应该接近使用100%的CPU利用率吗 仅当加载它们以利用100%的CPU时:) 我的任务在php中运行,主要是io阻塞 如果您的任务主要是进行IO调用,那么这很可能是CPU不高的原因。也就是说,当一个进程/硬盘在进行io调用并等待其完成后大部分处于空闲状态时 对配置进行基准测试至关重要。实际上,这可能看起来像:
- 选择并发的初始级别(即默认级别)
- 基准吞吐量/资源使用率
- 提高并发级别
- 基准吞吐量/资源使用率
- 继续,直到增加并发不再提供任何好处
当我使用eventlet时,如果有大约50个任务,芹菜就停止工作。在我提高了并发级别后,prefork工作得很好。我的任务大部分是io绑定的,并且从prefork切换到了gevent(类似于eventlet)。这使我可以每分钟多运行5到10倍的任务,并且工作得非常好。