0

我目前正在考虑用 Gearman 替换我们的家用 brew 批处理器。它运行的报告可能会占用数百兆内存 (PHP)。因此,如果运行这些报告中的太多,服务器将锁定。我必须添加逻辑以防止在内存不足和服务器超载并使其崩溃的情况下控制进程产生许多工作人员。

如果我切换到 Gearman,如果系统内存变低,是否有某种类型的逻辑可以防止额外的工作人员?我看到了限制工人的选项,但这并不能直接解决问题。此外,如果一个系统不堪重负,它是否足够聪明地平衡系统之间的工作负载?

其他人有什么建议?当条件合适时,我是否可以将自己的支票插入 Gearman 以生成工人?或者还有什么其他的解决方案?

在 LAMP 堆栈上开发,我对 Gearman 不是很熟悉,所以在需要的地方进行指责。

4

1 回答 1

1

限制工作人员的数量是可行的方法 - 如果您希望报告使用 3-400 MB 内存,请将工作人员的数量限制在 / 400 MB 左右。

如果您的内存使用量低于预期,您将无法扩展 Gearman 本身以生成工作人员,但您可以创建一个包装器来处理您的工作人员并为您执行此操作。在你走这条路之前,看看扩展GearmanManager来处理这些问题。然而,我的建议是顺其自然,而是在您获得一些关于您所期望的负载类型的经验之后调整工作人员的数量(无论是报告请求的速度,报告内存的大小)明智的,以及您需要以多快的速度回复请求报告的用户)。

Gearman 会自动将负载平衡到响应速度最快的服务器——当一个任务到达 gearmand 时,它会轮询所有可用的工作人员并告诉他们一个新任务已经到达,首先响应的客户端将获得该任务。这意味着如果服务器有负载,它对请求的响应速度会变慢,并且任务通常会在具有更多可用处理能力的服务器上结束(忽略网络延迟的变化)。这也将自动处理不同大小的服务器。

于 2012-07-23T09:19:14.693 回答