Articles of 集群计算

Node.JS,Socket.IO和群集中的WebSocket握手不起作用

我在使用Node.js,socket.io和node.js集群对应用程序进行集群时遇到了问题。 我使用socket.io-redis来共享所有工作人员的信息,但不工作。 我的代码: var cluster = require('cluster'); var numCPUs = require('os').cpus().length; if (cluster.isMaster) { // Fork workers. for (var i = 0; i < numCPUs; i++) { cluster.fork(); } cluster.on('exit', function(worker, code, signal) { console.log('worker ' + worker.process.pid + ' died'); }); } else { … var express = require("express"); //Server var server = express(); […]

节点集群与socket.io和expressjs

这是我的服务器代码: 我试图用socket.io和expressjs来使用群集。 我在我的四核心桌面上testing这个。 var cluster = require('cluster') var numCPUs = require('os').cpus().length if (cluster.isMaster) { // Fork workers. for (var i = 0; i < numCPUs; i++) { cluster.fork() } console.log(new Date()); } else { // get required modules var connect = require('connect'); var express = require('express'); var mongo = require('mongodb'); var MongoStore = require('connect-mongo')(express); var […]

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) { […]