2014-06-09 3 views
2

Я работаю с режущим работником, чтобы распределять фоновые задания нескольким работникам. Чтобы отслеживать эти фоновые задания и восстанавливать их после сбоя, мы используем supervisord как систему управления процессом.Увеличьте использование ЦП оператора Gearman со временем

Gearman код работника в значительной степени просто, как официальный, например:

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

while ($worker->work()); 

Для рабочих, я ожидал, во время выполнения задания загрузка процессора будет высокой, после завершения, если станет низким во время время ожидания. Но, что интересно, для длительных процессов он увеличивает время использования ЦП.

Кто-нибудь имеет представление о том, что является основной причиной постепенного использования ЦП с течением времени?

Кроме того, поскольку задачи выполняются на небольших экземплярах aws ec2, сколько рабочих может эффективно работать параллельно в одном экземпляре только для работников?

ответ

2

PHP не очень хорошо разработан для этого варианта использования. Возможно, разумно перезапустить рабочих на регулярном интервале. Если вы не полностью очищаете после каждой работы, вы можете столкнуться с тем, что по сути является утечкой памяти.

Небольшие экземпляры имеют одно ядро, что означает, что они будут эффективно выполнять одно задание за раз. Однако, если ваши задания должны ждать по какой-либо причине, например, от ответа API, вы можете одновременно выполнять несколько заданий.

+0

о «уборке», вы имеете в виду сборку мусора? Кроме того, если это произойдет, это может быть связано с системной памятью, но также ли это также может повлиять на использование ЦП? – Rana

+2

Сбор мусора работает только тогда, когда переменная становится неназначенной. У вас могут быть элементы в ваших работах, которые собирают данные (например, систему регистрации), но никогда не очищают ее. Если вы начнете использовать достаточное количество памяти, в результате чего вы перейдете в область подкачки, это увеличит использование ЦП. – datasage