随着时间的推移增加Gearman工作者的CPU使用率

时间:2014-06-09 17:25:11

标签: php amazon-ec2 gearman supervisord

我正在运行gearman worker为多个工作人员分配后台工作。为了监控那些后台工作并在崩溃时重新开始,我们使用supervisord作为流程管理系统。

作为官方示例,齿轮工人代码非常简单:

$worker = new GearmanWorker();
$worker->addServer($config["gearman.host"],$config["gearman.port"]);
$worker->addFunction("config_job", "run_config_job");

while ($worker->work());

对于工作人员,我期望在作业执行期间CPU使用率很高,在完成后如果在等待时间内变低。但有趣的是,对于长时间运行的进程,它会随着时间的推移而增加CPU使用率。

有谁知道随着时间的推移增加CPU使用率的主要原因是什么?

此外,由于任务在aws ec2小实例上运行,平均有多少工作人员可以在一个仅限工作者的实例中并行运行?

1 个答案:

答案 0 :(得分:2)

PHP并不是特别为这个用例设计的,谨慎的做法是定期重启工作者。如果你在每次工作后没有完全清理,你可能会遇到本质上是内存泄漏的问题。

小型实例具有单个核心,这意味着它们最有效地一次运行一个作业。但是,如果您的工作需要等待任何原因,例如API响应,您可能可以同时运行多个作业。