gpt4 book ai didi

php - 如何水平扩展 php 应用程序服务器?

转载 作者:行者123 更新时间:2023-12-02 05:39:18 25 4
gpt4 key购买 nike

我正在使用 lighttpd 作为 php 应用程序服务器的网络服务器。平均。此服务器上的负载约为 2-3。 MySQL 数据库被分离到另一台服务器(负载约为 0.4)。我如何扩展 php 应用程序服务器?

谢谢。

最佳答案

简而言之,一般来说,解决方案是:

  • 有几个PHP服务器
  • 在那些之前有另一个负载平衡服务器
    • 如果您有 3 个 PHP 服务器,那么此负载均衡器将发送它在每个 PHP 服务器上收到的请求的 33%。

负载均衡服务器可以是一些专门的硬件;或反向代理,使用 Apache (例如参见 mod_proxy_balancer)、nginx (例如参见 Load Balancing with Nginx)、varnish、...


当使用多个 PHP 服务器而不是多个 PHP 服务器时,您通常会遇到的最重要的问题与文件系统有关:对于多个服务器,每个服务器都有自己的磁盘和文件系统。

例如,如果用户在服务器 1 上随机平衡一个页面,而服务器 2 上另一个页面,则不能使用基于文件的 session : session 将在服务器 1 上创建,但不会在服务器上找到2、以后。
在这种特定情况下,您必须使用另一种机制来存储 session ——例如,将它们存储在数据库或 memcached 中。

图像也是如此(例如,由用户上传):您必须:

  • 在服务器之间同步它们
  • 或者使用某种网络驱动器


在评论后编辑:对于多台服务器的部署,我通常会像只有一台服务器那样做。

有关我经常使用的流程类型的更多信息,您可以查看我前一段时间对这个问题的回答: Updating a web app without any downtime .

那里给出的解释是针对一台服务器的,但是要在多台服务器上做同样的事情,你可以:

  • 将存档上传到您的每台服务器
  • 提取它
  • 并且,几乎在同一时刻,切换所有服务器上的符号链接(symbolic link)
    • 在最坏的情况下,每台服务器之间会有 2 或 3 秒的延迟,如果您有 5 台服务器,这意味着 10 秒?这可能不是什么大问题:-)

(我已经为一个应用程序使用多达 7 台服务器完成了此操作,并且从未遇到过任何问题)

关于php - 如何水平扩展 php 应用程序服务器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2644457/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com