【发布时间】:2013-02-03 06:36:45
【问题描述】:
我正在尝试使用 upstart 来启动 node.js 的多个实例 - 每个实例都在不同的 cpu 核心上侦听不同的端口。
启动配置:
start on startup
task
env NUM_WORKERS=2
script
for i in `seq 1 $NUM_WORKERS`
do
start worker N=$i
done
end script
工作器配置:
instance $N
script
export HOME="/node"
echo $$ > /var/run/worker-$N.pid
exec sudo -u root /usr/local/bin/node /node/server.js >> /var/log/worker-$N.sys.log 2>&1
end script
如何指定每个进程应在单独的核心上启动以扩展盒子内的 node.js?
【问题讨论】:
-
您是否考虑过使用内置的cluster 支持来代替?这样你的工人就可以共享同一个端口。此外,您必须依靠操作系统的调度程序来平衡可用 CPU 之间的计算工作,这也是正确的做法。
-
请注意
cluster模块仍处于稳定性 1 - 实验性。如果您正在使用它,请记住这一点。 -
是的,我知道
cluster,但我想使用nginx在端口之间进行内部负载平衡,然后使用upstart和monit确保所有工作人员都在运行。那么,有没有办法将工作人员分散到 cpu 核心上,每个核心一个?我在新贵的食谱中找不到任何有关此的信息。任何帮助将不胜感激。