如何平衡php应用程序的负载?

如何平衡php应用程序的负载?,php,linux,Php,Linux,我正在寻找如何平衡php应用程序负载的指南、建议或示例。我的设置是Ubuntu 10.04和PHP5.3。我从来没有负载平衡的服务器之前,我正在寻找任何帮助,提供 更新: 这是一个web应用程序,预计将有数百名用户同时使用它。MySQL将成为数据库。将为用户使用会话,但我听说会话不能通过多个服务器进行。将有非常频繁的内容更新。会有一些文件,但我只使用CDN来处理这些文件。web应用程序的负载平衡与应用程序本身没有多大关系,而与宿主和基础设施关系更大。然而,在构建负载平衡的应用程序时,仍然需要注意

我正在寻找如何平衡php应用程序负载的指南、建议或示例。我的设置是Ubuntu 10.04和PHP5.3。我从来没有负载平衡的服务器之前,我正在寻找任何帮助,提供

更新:

这是一个web应用程序,预计将有数百名用户同时使用它。MySQL将成为数据库。将为用户使用会话,但我听说会话不能通过多个服务器进行。将有非常频繁的内容更新。会有一些文件,但我只使用CDN来处理这些文件。

web应用程序的负载平衡与应用程序本身没有多大关系,而与宿主和基础设施关系更大。然而,在构建负载平衡的应用程序时,仍然需要注意一些关键点。以下是一些:

  • 不要使用状态服务器。这意味着您不能使用传统的会话对象,因为它存储在本地计算机的内存中,因此对象可能在一台服务器中可用,但在另一台服务器中不可用
  • 不要用磁盘存储任何东西。原因同上。您可以将文件写入服务器1磁盘,然后尝试读取服务器2
  • 总之,您应该避免使用任何依赖于服务器的资源。如果您需要使用类似的东西(状态服务器、磁盘等),您应该存储一个共享资源,以便所有负载平衡计算机都可以访问它
例如,如果这是现有应用程序的问题,您可以通过在负载平衡器上设置关联来解决此问题,这意味着来自特定用户的所有请求都将由同一服务器提供服务。显然,这种方法的缺点是使应用程序的可伸缩性降低,因为一台服务器可以获得比另一台服务器更多的处理

所以,关于做负载平衡器的软件,我不是一个Linux的家伙,但我看到很多人谈论Apache作为Web服务器,HAProxy作为负载平衡器应用程序


希望有帮助

有一些PHP类允许您将会话存储在MySQL中

我会将类似nginx的东西放在前端服务器上,并将其用于负载平衡。在这之后,您可以拥有两台web服务器,甚至可以使用nginx为您的静态内容提供服务

在您的Web服务器后面,您将拥有mysql数据库


我已经设计了一些接收速度刚刚超过1000/imp/sec的网络,并以此开始了网络设计。流量增加后,我通常只是从那里扩展基础设施,添加更多的Web服务器和只读数据库,并用一对F5替换nginx。

也许可以添加一些上下文,说明为什么您首先需要它,您将运行什么类型的应用程序以及它们的用途(是否使用数据库、文件、会话……是否有频繁的内容更新?是否有后端?等等)