Page 149 - Node.js开发指南
P. 149
142 第 6 章 Node.js 进阶话题
在终端中执行node cluster.js 命令,可以看到进程列表中启动了多个 node 进程(8
核CPU):
12408 ? 00:01:28 node
12411 ? 00:01:27 node
12412 ? 00:01:28 node
12414 ? 00:01:31 node
12416 ? 00:01:34 node
12418 ? 00:01:44 node
12420 ? 00:01:38 node
12422 ? 00:01:34 node
12424 ? 00:02:14 node
终止工作进程,新的工作进程会立即启动,终止主进程,所有工作进程也会同时结束。
这样,一个既能利用多核资源,又有实现故障恢复功能的服务器就诞生了。
6.3.3 启动脚本
接下来,我们还需要一个启动脚本来简化维护工作。如果你维护过Linux 服务器,会对
/etc/init.d/ 下面的脚本有印象。例如使用/etc/init.d/nginx start 和/etc/init.d/
nginx stop 可以启动和关闭Nginx 服务器。我们通过bash 脚本也来实现一个类似的功能,
创建microblog 并使用chmod +x microblog 赋予其执行权限,脚本内容为:
#! /bin/sh
NODE_ENV=production
DAEMON="node cluster.js"
NAME=Microblog
DESC=Microblog
PIDFILE="microblog.pid"
case "$1" in
start)
echo "Starting $DESC: "
nohup $DAEMON > /dev/null &
echo $! > $PIDFILE
echo "$NAME."
;;
stop)
echo "Stopping $DESC: "
pid='cat $PIDFILE'
kill $pid
rm $PIDFILE
echo "$NAME."
;;
esac
exit 0