CNode

问: cnode社区在程序挂掉后,是如何自动重启的呢

问答
Nnqdy666发布于11 年前最后回复6 年前14 回复7453 浏览0 收藏

自己在使用cnode源代码在阿里云上搭建了服务(代码稍有改动), 在某些情况下, 程序会异常崩溃, 导致无法访问. 每次都要远程登入重启程序. 不知cnode社区是怎么应对这种情况, 是否后台有守护进程在跑么, 在服务挂掉的时候,能够重启服务. 如果有的话,能否提供下守护进程的源代码,学习一下.

查看回复

回复 (14)

N
nqdy666#1·11 年前
引用 luoyjx看看Makefile就知

@luoyjx 多谢提点,看到了。

C
coordcn#2·11 年前
引用 dayuoba@coordcn cluster确实是对child process的封装,但是cluster模块为了实现共享监听端口额外做了一些工作 cluster重表象理解可以理解为 nginx(share...

@dayuoba cluster的确存在处理进程的不确定性问题,如果进程内不保持状态的话,是没有问题的,游戏,聊天服务器容易出问题。碰到这种问题,多进程监听不同的端口(做反向代理),或者将链接固定到某个进程上都是可行的。

cluster和nginx都会存在这样的问题,这个是共享端口多进程最大的问题,做web没什么问题,其他的就不保险了。

我跟楼主推荐cluster主要原因是简单,几句代码立竿见影,细节上没有你考虑的周到。

S
shuiRong#3·6 年前

(五年过去了) pm2真香

C
coordcn#4·11 年前

cluster可以解决你的烦恼,多进程,某个进程死掉,自动fork出一个顶上。

D
dayuoba#5·11 年前
引用 coordcncluster可以解决你的烦恼,多进程,某个进程死掉,自动fork出一个顶上。

@coordcn cluster还处于实验状态,而且在nginx反向代理下有一些问题。 nodejs有foreverpm2两个常用daemon模块,可以使用一下。

N
nqdy666#6·11 年前
引用 coordcncluster可以解决你的烦恼,多进程,某个进程死掉,自动fork出一个顶上。

@coordcn 你讲的cluster是nodejs自带的多核处理模块cluster是吧. 可我的服务器是单核的. 能有效么?

A
alsotang#8·11 年前

pm2

A
alsotang#9·11 年前
引用 nqdy666@coordcn 你讲的cluster是nodejs自带的多核处理模块cluster是吧. 可我的服务器是单核的. 能有效么?

@nqdy666 服务器是单核的话,虽然无法利用多 cpu,但是还是可以用 cluster 保证自动重启。pm2 内部也是用了 cluster

C
coordcn#10·11 年前
引用 dayuoba@coordcn cluster还处于实验状态,而且在nginx反向代理下有一些问题。 nodejs有forever和pm2两个常用daemon模块,可以使用一下。

@dayuoba 内部实现原理都是一样的,cluster也是child_porcess的封装,forever和pm2也不会例外的。

子进程监控本质上SIGCHLD信号的处理,当主进程收到子进程的SIGCHLD信号,就说明子进程挂掉了,我们可以重新fork一个进程出来顶上。

不知道你说的反向代理是什么问题?能详细说下么?

L
luoyjx#12·11 年前

看看Makefile就知

W
wq123456#13·11 年前

我也使用了这套框架,目前没有出现状况呢 自豪地采用 CNodeJS ionic

D
dayuoba#14·11 年前
引用 coordcn@dayuoba 内部实现原理都是一样的,cluster也是child porcess的封装,forever和pm2也不会例外的。 子进程监控本质上SIGCHLD信号的处理,当主进程收到子进程...

@coordcn cluster确实是对child_process的封装,但是cluster模块为了实现共享监听端口额外做了一些工作 cluster重表象理解可以理解为 nginx(shared port)->processes(different ports) 可控性不如拆分出来做高。

nginx下用cluster的问题是我在用socket.io时候遇到的,nginx 用upstream iphash ,cluster 用sticky-socket,这两个一起用的时候连接异常的紊乱。就是websocket的链接不断的断开重连。。。

参与回复
登录后即可参与回复。登录