2012-07-20 97 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