2012-07-11 62 views
2

午後量,Gearman的工人 - 限制作業的工人將處理

我們在生產環境中使用Gearman的,我們有一對夫婦運行工這是每天處理成千上萬的就業機會100的(忙碌的工人) 。儘管我們的記憶力稍有問題,但泄漏量非常小,但幾天後就會增加。

在命令行上,當我運行

gearman --help 

它說

... 
Worker options: 
-c <count> - Number of jobs for worker to run before exiting 

這似乎是一個理想的選擇,我們可以將其設置爲50〜k和知道,工人會死關閉並解決問題。然而通過pecl庫查看gearman我看不到我可以添加/配置的位置。

有一個AddOption方法需要一個int - 但我無法在文檔或源代碼中找到任何可以設置的地方。

我不想來配置我自己的管理體系......

任何想法?

+0

如果沒有建議的答案可以工作或接受答案,您能否提供更多信息? – MatsLindh 2012-08-05 20:16:48

回答

1

GearmanManager允許您指定每個工作人員在重新啓動之前應該存活的時間(以秒爲單位,不是執行的任務)。

否則,您可以只跟蹤工人執行的任務數量,並在while循環中用bash腳本啓動它。當你達到50k時,退出()並讓bash腳本重啓你的工作。

+0

我在我的機器上安裝了gearman manager,我在config.ini文件中設置了配置。但它不起作用。 – 2015-07-16 06:41:24

+0

@RAVIMONE然後提出一個問題幷包含相關信息。 – MatsLindh 2015-07-16 09:44:50

0

您應該發佈一些關於您如何處理工作人員的代碼,因爲添加這樣的限制通常是微不足道的。基於從手工樣品:

$worker = new GearmanWorker(); 
$worker->addServer(); 

$worker->addFunction("reverse", "my_reverse_function"); 

while ($worker->work()); 

的工人在一次執行一個操作,因此,所有你需要做的就是更換別的東西while循環。

for ($i; 50000 > $i; ++$i) { $worker->work(); } 

我不知道你是如何設法保持工人還活着,但我發現Upstart很好地工作。

+0

爲了讓工作人員保持活力,您可以使用主管,使用Gearman + Supervisor非常常見。 – 2014-05-21 14:58:09