在PHP中加载平衡

时间:2010-10-29 03:11:57

标签: php mysql apache load-balancing

我有一个用PHP-MYSQL编写的Web服务。该脚本涉及从其他网站(如维基百科,谷歌等)获取数据。脚本的平均执行时间为5秒(当前在1台服务器上运行)。现在我被要求扩展系统以处理60个请求/秒。我应该遵循哪种方法。 - 服务器之间的分离功能(我创建1个服务器来从维基百科中获取数据,另一个服务器来自google等和主服务器。) - 服务器之间的分离负载(我创建一个主服务器,将请求完全循环到其子服务器,每个子处理一个完整的请求。这里的子服务器之间的MYSQL数据库共享怎么样?)

2 个答案:

答案 0 :(得分:1)

我不确定通过在服务器之间拆分功能(选项#1)可以获得什么。您可以使用Apache的mod_proxy_balancer来完成第二个选项。它有一些不同的算法来确定哪个服务器最有可能处理请求。

http://httpd.apache.org/docs/2.1/mod/mod_proxy_balancer.html

Apache / PHP应该能够自己同时处理多个请求。您只需要确保有足够的内存并正确配置Apache。

答案 1 :(得分:1)

您的脚本不是服务器它在向其他网站发出请求时充当客户端。其余的时间只是服务器的一个组成部分。

是的,同时运行多个客户端(脚本实例 - 您不需要更多硬件)将比顺序运行快得多,但是如果您需要与传入的脚本请求同步获取数据,那么协调单独实例的结果将很困难 - 相反,您可以查看curl_multi *函数,它们允许您批量处理多个请求并从单个PHP线程同时运行它们。

或者,如果您事先知道对Web服务的传入请求是什么,那么您应该考虑实现提取的调度和缓存,以便在请求到达时它们已经可用。