假如我有 3 台服务器, 一台服务器使用 nginx 做负载均衡,转发到另外两台应用服务器, 那么这两台应用服务器的配置是只有 php-fpm 呢,还是 nginx+php-fpm
我看到网上的配置有 (nginx 负载均衡)+ (ngin + php-fpm)+(ngin+php-fpm) 也有 (nginx 负载均衡)+ (php-fpm)+(php-fpm)
这两种配置架构有什么区别?一般都使用哪种?
1
Sunyanzi 2016-09-18 13:26:56 +08:00
别人怎么做不知道 ... 反正我的应用服务器只跑 php-fpm ... 除非同时兼任分发否则不会跑别的 ...
我觉得如果在应用服务器上跑 nginx 却只连本地 php-fpm 的话 ... 这个 nginx 用的就完全没意义 ... 这种反向代理架构的优点 ... 大概就是前端挂了的时候可以很方便的把后端一键顶上去送死吧 ... |
2
w708833018 OP @Sunyanzi 我跟你的想法一样,不过我问过很多群,不少人选择 ngin+php-fpm ,也有人选择 php-fpm 。没有人能清清楚楚的说明白这两种设计到底有什么优劣,我就很纠结。
|
3
chenset 2016-09-18 14:47:43 +08:00
同样纠结过的问题, mark
|
4
ovear 2016-09-18 15:38:00 +08:00 via Android
难道就我一个人是 Nginx with multiply apache 么。。
|
5
fredcc 2016-09-18 15:42:02 +08:00 1
nginx 与 php-fpm 不在一台机器上时,要走 TCP 连接,效能和承载能力不如 nginx+php-fpm 走 unix domain socket ,这个对比测试很多。
|
6
alexleft 2016-09-18 15:48:13 +08:00
如果是我设计,我会考虑用 lvs 做 HA 和负载均衡,然后每台服务器上部署一个 nginx , 然后每台服务器上再部署 N 个 php-fpm 。因为一个 php-fpm 很容易挂掉,物理资源可能也用不尽。
nginx 上还可以合理把访问在不同的 php-fpm 进程间做次一级的负载平衡。 |
7
alexleft 2016-09-18 15:51:20 +08:00
换另外一种角度看, php-fpm 的集合其实就是应用程序池了, lvs+nginx 只是负载均衡网关。
|
8
alex321 2016-09-18 17:58:21 +08:00
外行人随便说一说, TCP 和 Unix Socket 的区别。
https://easyengine.io/tutorials/php/fpm-sysctl-tweaking/ |
9
w708833018 OP 能给一个测试结论的链接吗
|
10
w708833018 OP @fredcc 能给一个测试结论的链接吗
|
11
fredcc 2016-09-18 18:10:15 +08:00
@w708833018 自己跑一下测试脚本也很快的吧。
|
12
sunmonster 2016-09-18 22:56:30 +08:00
咦,现在的 php-fpm 连的不是 unix socket 吗,我看的教程基本上都是 unix socket ,连 9000 端口的话应该很少了吧
|
13
alpha1130 2016-09-21 19:46:43 +08:00
建议是 nginx+php-fpm 的部署方式,跨服务器的 php-fpm 容易出现网络 IO 瓶颈
如果可以直接向外网暴露服务器,通过域名访问,做 dns 轮询就可以了 |