2013-02-02 10 views
0

我試圖用upstart來啓動node.js的多個實例 - 每個實例在不同的端口上監聽不同的cpu核心。Upstart:不同核心上的每個進程

啓動配置:

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的縮放箱內?

+0

您是否想過使用內置的[cluster](http://nodejs.org/docs/latest/api/all.html#all_how_it_works)支持呢?這樣你的工人就可以分享同一個港口。此外,AFAIK必須依靠操作系統的調度程序來平衡可用CPU之間的計算工作,無論如何這是正確的。 –

+0

被警告說'集羣'模塊仍然是穩定1 - 實驗。如果你正在使用它,請記住將來的未來。 – romualdr

+0

是的,我知道'cluster',但我想使用'nginx'來實現端口之間的內部負載平衡,然後使用'upstart'和'monit'來確保所有的worker都在運行。那麼,是否有辦法將工作人員跨CPU核心傳播,每核心一個?我沒有在暴發戶的食譜中找到任何有關這方面的信息。任何幫助,將不勝感激。 – sPaul

回答

0

taskset允許您爲任何Linux進程設置CPU關聯性。但是Linux內核已經傾向於在同一個CPU上保留一個進程來優化性能。

相關問題