Tag: 集群计算

Node.js集群 – 什么决定负载平衡?

我已经仔细阅读了这篇文章 ,并花了几个小时研究Node.js中的聚类(分叉过程)的主题。 我从文章中无法理解的东西是什么决定哪个工作进程获取请求X,如果他们都在同一个端口上进行侦听? 主进程是否有通道请求的方法,还是只是随机的?

在节点模块中使用群集

更新:即使这种情况是不现实的,根据意见,我仍然感兴趣的是如何可以编写一个模块,利用集群,而不是每次重新运行父进程。 我正在尝试编写一个名为mass-request的Node.js模块,通过将其分发到subprocess来加速大量的HTTP请求。 我的希望是,在外面,它是这样工作的。 var mr = require("mass-request"), scraper = mr(); for (var i = 0; i < my_urls_to_visit.length; i += 1) { scraper.add(my_urls_to_visit[i], function(resp) { // do something with response } } 为了开始,我为群发请求模块添加了一个框架。 var cluster = require("cluster"), numCPUs = require("os").cpus().length; module.exports = function() { console.log("hello from mass-request!"); if (cluster.isMaster) { for (var i = 0; […]

如何使用群集风格(使用更多的核心)?

我正在尝试使用cluster库启动sails.js应用程序,以便它可以产生更多的进程来使用我的机器的所有内核,但不知何故,这里使用express的方法会失败。 var cluster = require('cluster'), numCPUs = require('os').cpus().length; // create the server if (cluster.isMaster) { for (var i = 0; i < numCPUs; i++) { cluster.fork(); } cluster.on('exit', function(worker, code, signal) { console.log('worker %d died (%s). restarting…', worker.process.pid, signal || code); cluster.fork(); }); } else { // Start sails and pass it command line arguments […]

io.adapter是如何工作的?

我正在使用由node.js + express + socket.io提供的1-1聊天室应用程序。 我正在关注这篇文章: Socket.IO – 房间和命名空间 在这篇文章中,他们演示了如何使用模块socket.io-redis启动io.adapter : var io = require('socket.io')(3000); var redis = require('socket.io-redis'); io.adapter(redis({ host: 'localhost', port: 6379 })); 两个问题: 在文档中,他们提到了另外两个参数: pubClient和subClient 。 我应该供应吗? 有什么不同? io.adapter的行为如何? 例如,如果用户A连接到服务器A并且用户B是服务器B,并且他们想彼此“交谈”。 什么是在引擎盖下? 谢谢。

Socket.io,集群,expression和同步事件

我有一个很大的问题。 我尝试将我的node.JS项目实际上在单核上运行到集群的多核。 有了websockets,在这一刻,我没有事件的问题,但对于xhr轮询或jsonp轮询,我有群集模式下的socket.io大问题。 这是我的服务器configuration: 00 generic.js 'use strict'; var http = require('http'), os = require('os'), cluster = require('cluster'); module.exports = function(done) { var app = this.express, port = process.env.PORT || 3000, address = '0.0.0.0'; if(this.env == 'test'){ port = 3030; } var self = this; var size = os.cpus().length; if (cluster.isMaster) { console.info('Creating HTTP server […]

Node.js集群不会显着提高性能

如果有人想尝试 : https : //github.com/codependent/cluster-performance 我正在用一个简单的应用程序testing每秒限制的Node.js(v0.11.13 – Windows 7)请求。 我已经使用Express 4实现了一个服务,它使用setTimeoutcallback来模拟I / O操作,如数据库查询。 首先,我只用一个节点进程testing它。 对于第二个testing,我开始尽可能多的工作人员的机器CPU。 我正在使用loadtest使用以下参数testing服务: loadtest -n 50000 -c 220 -k http://localhost:5000/operations/timeout/20 也就是说,总共有5万个请求,有220个并发客户。 我的服务根据最后一个url参数(20 mseg)设置超时(处理时间的持续时间): router.route('/timeout/:time') .get(function(req, res) { setTimeout(function(){ appLog.debug("Timeout completed %d", process.pid); res.json(200,{result:process.pid}); },req.param('time')); }); 只有一个节点进程 这是结果: INFO Max requests: 50000 INFO Concurrency level: 200 INFO Agent: keepalive INFO INFO Completed requests: […]

节点js 0.10.7:群集支持udp dgram?

我试图运行下面的节点js应用程序提到https://github.com/joyent/node/issues/2194 var util = require("util"), dgram = require("dgram"), cluster = require('cluster'); var udp = dgram.createSocket("udp4"); var port = 1190; if (cluster.isMaster) { for (i = 0; i < 2; i++) { cluster.fork(); } } else { util.log("starting udp server on port " + port); udp.on("error", function (error) { util.log("failed to bind to UDP port – […]

使用cluster.fork()debuggingNode.js进程

我有一些代码看起来非常像http://nodejs.org/docs/v0.6.0/api/cluster.html中的Cluster文档中的示例: var cluster = require('cluster'); var server = require('./mycustomserver'); var numCPUs = require('os').cpus().length; if (cluster.isMaster) { var i; // Master process for (i = 0; i < numCPUs; i++) { cluster.fork(); } cluster.on('death', function (worker) { console.log('Worker ' + worker.pid + ' died'); }); } else { // Worker process server.createServer({port: 80}, function(err, result) { […]

Nodejs应用程序错误:使用pm2部署时绑定EADDRINUSE

快速应用程序部署与pm2 数据库是MongoDB 当用命令运行应用程序时: NODE_ENV=production pm2 start app.js -i max 下午有错误:绑定EADDRINUSE,这是日志,当出错时, [app err (l0)] js:1073:26 [app err (l1)] at Object.30:1 (cluster.js:587:5) [app err (l2)] at handleResponse (cluster.js:171:41) [app err (l3)] at respond (cluster.js:192:5) [app err (l4)] at handleMessage (cluster.js:202:5) [app err (l5)] at process.EventEmitter.emit (events.js:117:20) [app err (l6)] at handleMessage (child_process.js:318:10) [app err (l7)] at child_process.js:392:7 […]

Nodejs集群和expressjs会话

我试图构buildnodejs应用程序,它将利用多核机器(又名集群),我有一个关于会议的问题。 我的代码如下所示: var cluster = exports.cluster = require('cluster'); var numCPUs = require('os').cpus().length; if (cluster.isMaster) { for (var i = 0; i < numCPUs; i++) { cluster.fork(); } cluster.on('exit', function(worker, code, signal) { console.log('worker ' + worker.process.pid + ' died. Trying to respawn…'); cluster.fork(); }); } else { //spawn express etc } 我的问题是:每次单个用户点击随机节点实例,或者例如他第一次打开页面并击中节点N4,直到他的会话到期,他每次请求都击中节点N4? 对于那些不理解我的问题的人,我会试着解释我所担心的:用户进入我的页面,他在N3节点上login,然后将req.session.userdata设置为一个随机数据,他刷新页面,他击中节点N4,我将能够访问不同节点的req.session.userdata? 这意味着用户有机会随机注销,或者我只是不了解如何与快递作品集群?