Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Concurrency 芹菜仅使用20%的Cpu(峰值)_Concurrency_Rabbitmq_Load_Celery_Cpu - Fatal编程技术网

Concurrency 芹菜仅使用20%的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

我正在运行芹菜+兔子MQ应用程序。我启动了一堆ec2机器,但我发现我的芹菜工人机器只使用大约15%的cpu(峰值为20%)。我已经为每台机器配置了2名芹菜工人

芹菜工人不应该接近使用100%的CPU利用率吗


更多信息:我没有使用芹菜——并发选项或eventlet,即使我使用了多个worker。默认情况下,并发性设置为8。我的任务在php中运行,主要是io阻塞,所以如果我们有更多的进程并行运行,就不会有问题。有没有办法根据CPU使用情况将芹菜配置为运行更多的任务?您有两个选择:增加(使用--concurrency)或使用(不推荐使用)。大多数情况下,我们在AWS上过度使用并发设置数,即2*N,其中N是您选择的实例类型上的VCPU数。我们不会过度使用订阅了特殊队列的节点,在该队列中我们发送CPU限制的任务。

芹菜工人不应该接近使用100%的CPU利用率吗

仅当加载它们以利用100%的CPU时:)

我的任务在php中运行,主要是io阻塞

如果您的任务主要是进行IO调用,那么这很可能是CPU不高的原因。也就是说,当一个进程/硬盘在进行io调用并等待其完成后大部分处于空闲状态时

对配置进行基准测试至关重要。实际上,这可能看起来像:

  • 选择并发的初始级别(即默认级别)
  • 基准吞吐量/资源使用率
  • 提高并发级别
  • 基准吞吐量/资源使用率
  • 继续,直到增加并发不再提供任何好处
如果您的辅助任务是IO绑定的,那么这是一个非常适合的情况。因为它允许您在单个处理器上运行许多IO绑定的任务。考虑你的机器有64个核心的情况。您应该能够轻松地为IO绑定的任务运行多个这样的任务,但在某些情况下,大多数资源将用于处理记帐、开销和上下文切换

使用eventlet,单个处理器可以处理数百或数千个并发工作进程:

预工作池可以使用多个进程,但需要多少个 通常仅限于每个CPU几个进程。使用Eventlet,您可以 有效地产生数百个或数千个绿色线程。在一个 使用feed hub系统进行非正式测试,Eventlet池可以获取和 每秒处理数百个提要,而预工作池 14秒处理100个提要。请注意,这是 应用程序异步I/O特别擅长(异步HTTP) 请求)。您可能需要Eventlet和prefork Worker的混合, 并根据兼容性或最佳工作方式安排任务


当我使用eventlet时,如果有大约50个任务,芹菜就停止工作。在我提高了并发级别后,prefork工作得很好。我的任务大部分是io绑定的,并且从prefork切换到了gevent(类似于eventlet)。这使我可以每分钟多运行5到10倍的任务,并且工作得非常好。