下午,
我们在生产环境中使用Gearman,我们有几个工人正在运行,每天处理100个工作量(忙碌的工人)。我们有一个轻微的内存问题,泄漏非常小,但几天后它正在积累。
在命令行中,当我运行
时gearman --help
它说
...
Worker options:
-c <count> - Number of jobs for worker to run before exiting
这似乎是理想的选择,我们可以将它设置为50~k并且知道工人会死掉并且问题得到解决。然而,通过pecl库查找gearman我无法看到我可以在哪里添加/配置它。
有一个AddOption方法,它接受一个int - 但是我在文档或源代码中找不到任何可以设置它的引用。
我不想配置自己的管理系统......
有什么想法吗?
答案 0 :(得分:1)
GearmanManager允许您指定每个工作人员在重新启动之前应该生存的时间(以秒为单位,而不是执行任务)。
否则,您可以跟踪工作中执行的任务数,并在while循环中使用bash-script启动它。当你达到50k时,只需退出()并让bash脚本重新启动你的工作。
答案 1 :(得分:0)
您应该发布一些关于如何处理工作人员的代码,因为添加这样的限制通常是微不足道的。根据手册中的样本:
$worker = new GearmanWorker();
$worker->addServer();
$worker->addFunction("reverse", "my_reverse_function");
while ($worker->work());
worker一次执行一个操作,所以你需要做的就是用while循环替换其他东西。
for ($i; 50000 > $i; ++$i) { $worker->work(); }
我不知道你是如何让工人保持活力的,但我发现Upstart可以很好地工作。