跨服务器负载均衡

时间:2010-11-14 04:57:23

标签: php load-balancing time-wait

我在3台服务器上运行了一个Web服务。按摩如下 -Server 1接收用户请求将其存储在本地数据库上并对其进行一些操作。 - 服务器2和3是相同的主要工作马,它们根据请求从互联网获取信息并将其返回。 -Server 1通过lan上的http请求调用服务器2/3(服务器2和3上有一个php脚本,因此服务器1将其称为http://localip/script.php) - 服务器1交替调用服务器2或3(这样做是为了分配负载) 服务器2/3上的每个查询大约需要8秒才能处理。 现在,当我在所有服务器上安装监控工具时,发现server1负载过大(显示进程数>关键限制) 这不是平衡负载的方法吗?如何减少Server1中的负载?

1 个答案:

答案 0 :(得分:1)

服务器1正在响应来自用户的传入请求。因此,如果您确定它是瓶颈,那么您需要将注意力集中在那里。

如果服务器2和3仅对互联网执行查询,那么他们可能没有做太多工作处理器/磁​​盘。

如果您有2台服务器配置为执行相当简单的任务,并且您的主要面向用户的服务器正在过载,那么将所有3台服务器作为面向用户运行可能更好。

从您所描述的内容来看,服务器#1阻止服务器响应2& 3,意味着它必须潜在地打开许多连接。如果服务器2& 3并不是真的没那么多工作,因为他们的任务只是互联网查询,通过将面向用户的服务器和查询引擎合并到一个服务器并在所有3个服务器上分配用户负载,可能会更好地服务。

这样,每台服务器的开放用户连接都会减少。并且查询引擎仍然没有占用资源(如果它只是Web请求),所以它不会对用户性能产生负面影响。

给你一些想法。如果不了解您的应用程序,就不可能完全确定。

其他评论

正如评论中所提到的,你应该研究一个合适的负载均衡器,一个好的硬件负载均衡器是第一个建议。你在哪里运行你的服务器?如果他们位于Amazon EC2,Rackspace等云数据中心,那么您可以轻松获得负载均衡服务。

您还可以使用软件负载均衡器。 Apache甚至提供此功能:

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

即使使用当前配置,也可以将Apache放在其中一个服务器之前,然后对其进行调整,以便使用Apache(执行负载平衡)的服务器获得较低的流量百分比,以抵消费用Apache服务器。在这种情况下,您没有硬件更改。虽然您有一个明显的单点故障,但与您现在的情况没有什么不同,正确的负载均衡器通常可以缓解您目前在架构中遇到的单点故障问题。