V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
w708833018
V2EX  ›  PHP

我想使用 3 台服务器做 php 应用的负载均衡

  •  
  •   w708833018 · 2016-09-18 11:19:57 +08:00 · 4349 次点击
    这是一个创建于 2992 天前的主题,其中的信息可能已经有所发展或是发生改变。

    假如我有 3 台服务器, 一台服务器使用 nginx 做负载均衡,转发到另外两台应用服务器, 那么这两台应用服务器的配置是只有 php-fpm 呢,还是 nginx+php-fpm

    我看到网上的配置有 (nginx 负载均衡)+ (ngin + php-fpm)+(ngin+php-fpm) 也有 (nginx 负载均衡)+ (php-fpm)+(php-fpm)

    这两种配置架构有什么区别?一般都使用哪种?

    第 1 条附言  ·  2016-09-18 17:50:57 +08:00
    我用 3 台机器对这两种设计做了一次测试

    并发 150 执行 5 次,结果:

    设计方案 每次请求响应时间

    php-fpm : 4.68 4.74 4.70 4.74 4.68


    nginx + php-fpm : 4.64 4.66 4.65 4.67 4.63

    结论是 nginx + php-fpm 这种设计在高并发下响应时间反而更快一点。
    13 条回复    2016-09-21 19:46:43 +08:00
    Sunyanzi
        1
    Sunyanzi  
       2016-09-18 13:26:56 +08:00
    别人怎么做不知道 ... 反正我的应用服务器只跑 php-fpm ... 除非同时兼任分发否则不会跑别的 ...

    我觉得如果在应用服务器上跑 nginx 却只连本地 php-fpm 的话 ... 这个 nginx 用的就完全没意义 ...

    这种反向代理架构的优点 ... 大概就是前端挂了的时候可以很方便的把后端一键顶上去送死吧 ...
    w708833018
        2
    w708833018  
    OP
       2016-09-18 14:05:42 +08:00
    @Sunyanzi 我跟你的想法一样,不过我问过很多群,不少人选择 ngin+php-fpm ,也有人选择 php-fpm 。没有人能清清楚楚的说明白这两种设计到底有什么优劣,我就很纠结。
    chenset
        3
    chenset  
       2016-09-18 14:47:43 +08:00
    同样纠结过的问题, mark
    ovear
        4
    ovear  
       2016-09-18 15:38:00 +08:00 via Android
    难道就我一个人是 Nginx with multiply apache 么。。
    fredcc
        5
    fredcc  
       2016-09-18 15:42:02 +08:00   ❤️ 1
    nginx 与 php-fpm 不在一台机器上时,要走 TCP 连接,效能和承载能力不如 nginx+php-fpm 走 unix domain socket ,这个对比测试很多。
    alexleft
        6
    alexleft  
       2016-09-18 15:48:13 +08:00
    如果是我设计,我会考虑用 lvs 做 HA 和负载均衡,然后每台服务器上部署一个 nginx , 然后每台服务器上再部署 N 个 php-fpm 。因为一个 php-fpm 很容易挂掉,物理资源可能也用不尽。
    nginx 上还可以合理把访问在不同的 php-fpm 进程间做次一级的负载平衡。
    alexleft
        7
    alexleft  
       2016-09-18 15:51:20 +08:00
    换另外一种角度看, php-fpm 的集合其实就是应用程序池了, lvs+nginx 只是负载均衡网关。
    alex321
        8
    alex321  
       2016-09-18 17:58:21 +08:00
    外行人随便说一说, TCP 和 Unix Socket 的区别。
    https://easyengine.io/tutorials/php/fpm-sysctl-tweaking/
    w708833018
        9
    w708833018  
    OP
       2016-09-18 17:58:35 +08:00
    能给一个测试结论的链接吗
    w708833018
        10
    w708833018  
    OP
       2016-09-18 17:58:50 +08:00
    @fredcc 能给一个测试结论的链接吗
    fredcc
        11
    fredcc  
       2016-09-18 18:10:15 +08:00
    @w708833018 自己跑一下测试脚本也很快的吧。
    sunmonster
        12
    sunmonster  
       2016-09-18 22:56:30 +08:00
    咦,现在的 php-fpm 连的不是 unix socket 吗,我看的教程基本上都是 unix socket ,连 9000 端口的话应该很少了吧
    alpha1130
        13
    alpha1130  
       2016-09-21 19:46:43 +08:00
    建议是 nginx+php-fpm 的部署方式,跨服务器的 php-fpm 容易出现网络 IO 瓶颈
    如果可以直接向外网暴露服务器,通过域名访问,做 dns 轮询就可以了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   6021 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 02:10 · PVG 10:10 · LAX 18:10 · JFK 21:10
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.