php - 随着时间的推移,增加 Gearman Worker 的 CPU 使用率

标签 php amazon-ec2 gearman supervisord

我正在运行 gearman 工作人员以将后台作业分配给多个工作人员。为了监视这些后台作业并在崩溃时重新启动,我们使用supervisord作为进程管理系统。

gearman 工作代码与官方示例一样非常简单:

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

while ($worker->work());

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

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

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

最佳答案

PHP 并不是专门针对此用例设计的,定期重新启动工作线程可能是明智的做法。如果您在每次作业后没有完全清理,则可能会遇到本质上的内存泄漏。

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

关于php - 随着时间的推移,增加 Gearman Worker 的 CPU 使用率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24125502/

相关文章:

java - DescribeImagesRequest中如何按名称过滤描述图片?

python-3.x - 如何在 Amazon Linux 上安装 Ansible 以在 Python3 下运行?

gearman - 如何通过 Monit 监控 gearmand 守护进程?

php - PHP 中消息队列和工作系统的有效架构?

windows - 如何在 Windows 操作系统中配置或安装 GEARMAN?

PHP边阅读边下载文件

PHP - 使用 DOM 编辑 XML

amazon-web-services - 如何调试失败的systemctl服务(代码=已退出,状态= 217/USER)?

javascript - 将JS中下拉列表的值解析为php

php - 在数据库中计算相等值的最佳做法是什么?