在同一台机器上对同一 web 程序运行多个进程,然后 nginx 负载均衡有意义吗?

2017-08-08 15:12:04 +08:00
 guyeuro

看到有的公司某个 web 应用这么做,有点奇怪

3138 次点击
所在节点    问与答
22 条回复
ixiaohei
2017-08-08 15:18:15 +08:00
如果是滚动升级可能还有点用(升级一个另外个还能服务),另外可能是 32 位系统,装了多个 jvm?以前见过很多人这么用,其他的作用未知。
ixiaohei
2017-08-08 15:18:46 +08:00
上面写错了,32 位 jvm,64 位系统。
guyeuro
2017-08-08 16:04:23 +08:00
@ixiaohei 装多个 jvm 的好处?
xmadi
2017-08-08 16:09:20 +08:00
有意义 比如 nodejs 本身是线程的 如果想充分利用多核 这是一种比较常见的方法 因为不需要改动代码 只要多运行几个实例就可以了 当然也有专门的多进程的模块 需要稍微改一些项目代码
xmadi
2017-08-08 16:09:57 +08:00
@xmadi nodejs 本身是单线程的
guyeuro
2017-08-08 17:25:33 +08:00
@xmadi 我说的是 java web 项目
TangMonk
2017-08-08 17:28:12 +08:00
node 和 ruby 就是这样的,因为 node 和 ruby 不能利用多核心, 只能 fork 多个进程来负载均衡
loveCoding
2017-08-08 17:37:41 +08:00
答案是不一定 .看应用上限瓶颈在哪里 .
misaka19000
2017-08-08 17:52:11 +08:00
当然有,充分发挥机器性能啊
guyeuro
2017-08-08 18:09:27 +08:00
@misaka19000 具体?带宽,CPU, 内存哪方面的性能在单 web 程序下有被浪费?
swulling
2017-08-08 18:16:26 +08:00
有意义:
1. 提前留好横向扩展的潜力,如果一台机器性能不足,可以很方便的快速扩容,而不是再折腾一番
2. nginx 可以做一些事情,不用到后端,比如简单的封禁、防攻击、请求监控、静态文件、URL rewrite 等
3. 如果后端是 Tornado 之类不能利用多核的单进程服务,相当于做了多进程

甚至还有更极端的,某厂的通用 PHP 容器,就是一个 nginx+php-fpm+业务逻辑,注意是每个容器内都有一个 nginx 哈,也是为了统一架构,方便监控、部署等等
kokdemo
2017-08-08 18:23:05 +08:00
想起来自己待的第一家公司

部门的技术负责人就是在同一台服务器上搭了好几个 tomcat 搞『负载均衡』

看的我目瞪狗呆
TheCure
2017-08-08 18:57:07 +08:00
@swulling 然后前面还要套一层 BFE
guyeuro
2017-08-08 23:08:19 +08:00
@swulling
你说的 3 点

1 我没看懂,一台机器一个 web 应用就不能扩容?
2 这个和一台机器运行一个还是多个应用没关系啊
3 是 java tomcat
guyeuro
2017-08-08 23:09:17 +08:00
@kokdemo 就是 java tomcat,同时跑好几个同一应用的实例
有啥用?
swulling
2017-08-09 00:08:01 +08:00
@guyeuro 夏虫不可语冰
@callofmx 多层结构,有的还有专门的 NGINX 接入层,结构复杂归复杂,但是能够实现很精确的流量调度,目前任意一个单机房故障自动避险已经没问题了
sagaxu
2017-08-09 00:08:10 +08:00
@guyeuro 比如灰度发布,比如发布新版本重启服务可以少丢请求
ixiaohei
2017-08-09 09:47:00 +08:00
@guyeuro 32 位 jvm 比 64 位 jvm 性能好,但是内存是 32 位限制,当初有很多人这么玩,现在几乎都是用 64jvm。
coolyujiyu
2017-08-09 10:04:33 +08:00
可以啊,没毛病啊,只要机器配置扛得住
还可以支持灰度发布呢
guyeuro
2017-08-09 10:54:45 +08:00
@coolyujiyu 好处是啥?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/381377

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX