对快速应用程序使用cluster2示例:(https://github.com/ql-io/cluster2)
var Cluster = require('cluster2'),
express = require('express');
var app = express.createServer();
var = clusterID;
app.get('/', function(req, res) {
console.log("Cluster: ", clusterID);
res.send('hello');
});
var c = new Cluster({
port: 3000,
});
c.on('forked', function(pid) {
clusterID = pid;
console.log('Worker ' + pid + ' forked');
});
c.listen(function(cb) {
cb(app);
});
我正在尝试确定哪个群集正在响应'/'的get请求 .
当工作者分叉时,试图捕获变量中的pid是不起作用的,我不明白为什么 .
这是我的解决方案,但是除了'forked'函数之外,所有情况下都没有定义clusterID . (我在第5行添加了变量clusterID,在get('/'...语句中添加了console.log,并在分叉该worker时将var clusterID设置为相应的pid .
我的印象是分叉工作者都使用了他们自己的服务器实例,因此在实例的持续时间内,一旦该工作者被分叉,就会设置pid . 这是不正确的?
谢谢
注 - 我无法创建标记cluster2(信誉限制),或选择群集作为标记 . 如果有人可以正确标记这个...
1 回答
即使在集群工作者中,
process.pid
也会为您提供当前的pid . 这样可行: