2012-07-20 61 views
0

我目前正在考慮用Gearman替換我們的家用釀造批處理器。它運行的報告可能需要幾百MB內存(PHP)。因此,如果運行的報告太多,服務器將被鎖定。如果內存不足,我不得不添加邏輯來防止控制進程產生到許多工作者,並使服務器超載並使其崩潰。防止Gearman耗盡系統內存

如果我切換到Gearman,是否有某種類型的邏輯來防止系統內存變低時的其他工作人員?我看到了限制工人的選擇,但這並不能直接解決問題。此外,如果一個系統不堪重負,它是否足夠智能地平衡系統之間的工作負載?

其他人有什麼建議嗎?當條件適合時,我可以將自己的支票插入Gearman以產生工人嗎?或者有什麼其他解決方案?

在LAMP堆棧上開發,我對Gearman並不是很熟悉,所以在需要的地方進行指責。

回答

1

限制工人數量是一條可行的路線 - 如果您希望報告使用3-400 MB內存,請將工作人員數量限制在400MB左右。

如果您的內存使用量低於預期,您將無法擴展Gearman本身以產生工人,但您可以創建一個處理工人的包裝併爲您完成。在你走這條路線之前,請看GearmanManager以解決這些問題。然而,我的建議只是讓它成爲,然後在您獲得一些經驗後調整工作人員的數量,以確定您期望的負載量(報告請求的速度有多快,報告的大小明智的和多快,你需要一個響應請求報告的用戶)。

Gearman會自動將負載平衡到響應最快的服務器 - 當任務到達gearmand時,它會輪詢所有可用的工作人員並告訴他們新的任務已經到達,並且首先響應的客戶端將會得到任務。這意味着如果服務器有負載,它對請求的響應會比較慢,並且任務通常會以具有更多可用處理能力的服務器結束(忽略網絡延遲的變化)。這也將自動處理不同大小的服務器。

+0

好吧,我想這可能是我唯一的選擇,感謝有關負載平衡的信息。應該能夠開局良好 – SeanDowney 2012-07-23 16:03:32