CNode

express 如何使用cluster 运行?

Yyouqingkui发布于12 年前最后回复11 年前20 回复12385 浏览0 收藏

现在express 是使用./bin/www 来运行。看了下里面的代码是这样

#!/usr/bin/env node
var debug = require('debug')('seller');
var app = require('../app');

app.set('port', process.env.PORT || 3001);

var server = app.listen(app.get('port'), function() {
  debug('Express server listening on port ' + server.address().port);
});

我要使用cluster是否改这里的代码?可否给个小例,谢谢!

查看回复

回复 (20)

Y
youqingkui#3·12 年前
引用 MiguelValentinevar debug = require('debug')('my application'); var app = require('../app'); var cluster = requi...

@MiguelValentine 发现个问题要是有个进程重启了,重启会再挂个进程,启动两个进程。这是什么原因啊? 核心4 pid:805 重启 核心4 pid:810 核心4 pid:811

Y
youqingkui#4·12 年前
引用 shaunhttps://gist.github.com/shaunlee/40c408eb4aea862beb0c

@shaun 感觉这是个简版的,谢谢!

Y
youqingkui#6·12 年前
引用 MiguelValentinevar debug = require('debug')('my application'); var app = require('../app'); var cluster = requi...

@MiguelValentine 我的是mac ox,与Ubuntu 12.04.4 LTS 都是这样子。

M
MiguelValentine#7·12 年前
引用 MiguelValentinevar debug = require('debug')('my application'); var app = require('../app'); var cluster = requi...

@youqingkui 你确定只挂了一个核心它重启两个?因为你核心数就只有那么多啊。不可能多FORK出来其他的。

Y
youqingkui#8·12 年前
引用 MiguelValentinevar debug = require('debug')('my application'); var app = require('../app'); var cluster = requi...

@MiguelValentine 嗯,他是挂了一个,然后重启的时候会有显示新开了两个进程。但是我看进程数没有变,那他是cluster.fork() 的时候挂了另外一个。 核心4 pid:805 重启 核心4 pid:810 核心4 pid:811

S
shantouyyt#9·11 年前

1.png 2.png 为什么我只开启2个,而线程中有3个?

C
CocaCola183#10·11 年前

收藏了

S
shantouyyt#11·11 年前

@MiguelValentine 为什么我只开启2个,而线程中有3个?一个是主线程,另外2个是工作线程吗?

D
DoubleSpout#12·11 年前

利用pm2吧,不要自己开了

S
shantouyyt#13·11 年前

@DoubleSpout 使用pm2或者使用cluster 模块来开启多线程 与使用nignx 有重复吗?

C
CommanderXL#15·11 年前

lz的主程主要是用来处理什么逻辑业务?

L
leapon#16·11 年前

用 passenger 管理进程。

J
jobn123#17·11 年前

收藏 自豪地采用 CNodeJS ionic

M
MiguelValentine#18·12 年前

var debug = require('debug')('my-application'); var app = require('../app'); var cluster = require('cluster') var numCPUs = require('os').cpus().length;

if(cluster.isMaster){
	console.log("宿主启动...");

	for (var i = 0; i < numCPUs; i++) {
		cluster.fork();
	}
	cluster.on('listening',function(worker,address){
		console.log('核心'+i+' pid:'+ worker.process.pid);
	});
	cluster.on('exit', function(worker, code, signal) {
		console.log('核心'+i+' pid:'+ worker.process.pid+' 重启')
		setTimeout(function() {cluster.fork();},2000);
	});
}else{
	app.set('port',88);
	var server = app.listen(app.get('port'),function() {
	});
}

//已经按照你的配置改动了下。这个是会自动延迟重启线程的代码。也就是所谓的NODE不会挂。但是错误还是要排查。

Y
yaochun#19·12 年前
引用 shaunhttps://gist.github.com/shaunlee/40c408eb4aea862beb0c

@shaun 咳。。。还是建议-- > 这样的代码少写,没有太多语义化

Y
yaochun#20·12 年前

看了lz的需求可以啊,都集群了,考虑多线程了,真棒~

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