Tag: 集群计算

nodejs集群模块 – 使用中的地址错误

我有一个express.js应用程序,每次有一个特定的请求(这里是:/计算/实时),它必须运行一个subprocess。 将会有用户创build的脚本来计算数据。 所以,我正在使用节点集群模块创build一个工作池,并select一个可以自由执行的脚本。 但是在集群本身的创build过程中,我碰壁了。 这里是代码clusterPool.js var cluster = require('cluster'); exports.setupCluster = function(){ console.log ("Setting up cluster for bot processing " ) if (cluster.isMaster){ cluster.fork(); //one is good enough at the moment } } compute.js var async = require('async'); var clusterPool = require('.././clusterPool') //Start the cluster clusterPool.setupCluster(); exports.computeRealTime = function(req,res){ clusterPool.cluster.on("listening",function(worker){ //….Do something with the worker […]

将Nodejs服务器扩展到多个系统?

我想使用express来构buildnodejs中的聊天服务器。我已经使用集群模块在多个核心之间扩展服务器,但是如何扩展到不同的系统?

当在nodejs中使用集群和winston时,日志的最大大小不起作用

当我在nodejs中使用集群和winston时,日志的最大大小不起作用。所有的日志都会logging一个文件,虽然大小超过了最大大小。 在这里看到同样的问题: https : //github.com/flatiron/winston/issues/275

socket.io + redis + expressjs集群 – 在expressjs请求中获取套接字对象

基于这个答案的问题: https : //stackoverflow.com/a/18650183/4478897 我试图find这个解决scheme,但似乎没有任何工作,我需要的方式。 expressjs和socket.io我们可以使用redis共享会话,并在io世界里发送io消息( io.sockets.on('connection', …)。问题是如果我们想发送消息(或者使用简单的socket.join/leave )在expressjs世界( route.get/post )中。 如果我们不使用集群,我们可以将客户端socket对象连接到表示request对象(或简单地export io对象),然后在任何GET / POST路由上随时使用它。 另一方面,如果我们正在使用上面提到的方法获取expressjs世界中的socket对象,有时socket对象是未定义的,因为此客户端的socket对象是在其他worker初始化的。 一些示例stream程: 客户端连接到http:// localhost , worker 1处理这个请求。 页面加载后,客户端连接到socket.io 。 Worker 2处理这个连接。 客户端执行一个POST,并且worker 1或worker X处理这个请求。 在这种情况下,当客户端执行POST时,只有worker 2知道该客户端的socket对象。 所以这将得到一个未定义的socket对象。 所以,这个问题: 我们如何从任何worker获取客户端socket对象来在expressjs request对象上重用它。 也许我的代码是错误的,但几乎就像上面提到的答案的链接。 笔记 不想使用某种代理。 不想迁移到其他库(expressio,sockjs …) 对不起我的英语不好 :) 使用最后一个nodejs,socket.io,expressjs,socket.io-redis,redis …版本 不要犹豫,问问题! 更新1 可能的解决scheme,但仍然需要testing它。 不知道这是否是一个非常好的解决scheme。 更新3 :工作代码在我自己的答案 更新2 像更新1,但使用https://nodejs.org/dist/latest-v5.x/docs/api/cluster.html#cluster_event_message

使用socket.io与群集?

我很好奇,我可以同时使用socket.io和群集。 我知道集群使用多核工作在多个worker的node.js上。 这意味着如果我使用群集socket.io,两个连接的用户 两个不同的socket.io可能会导致无法相互通信的问题? 所以,而不是在socket.io上使用集群将是一个答案?

Node.js将带有函数定义的对象发送给工作线程

所以我在Node.js的一个项目中工作,我想打开一些额外的线程来更有效地处理处理负载。 但是我正在使用带有函数定义的类,当我尝试将这些对象发送给工作线程时,对象中定义的函数就消失了,我只剩下对象中的其他字段。 有没有办法给工人发送一个对象,并保留这些function,以便在工人内部调用它们? var cluster = require('cluster'); if(cluster.isMaster){ Monster = function(species){ this.attack = function(){ console.log('CHOMP'); }; this.name = species; }; var vamp = new Monster('vampire'), worker = cluster.fork(); worker.send({'monster' : vamp}); } else{ process.on('message', function(msg) { console.log(msg.monster); //this logs "{ name: 'vampire' }" msg.monster.attack(); //TypeError: Object #<Object> has no method 'attack' }); }

在Heroku中运行Node.js应用程序与集群模块是没有意义的?

Heroku可以运行 Web Dynos 和 工人Dynos 以便Web Dynos负责pipe理路线 和工人工人Dynos照顾处理工作。 由于有一个Dyno的单位, 看来使用Node.js集群模块对Heroku来说是毫无意义的。 因为Node.js集群模块是使用服务器CPU的全部核心 而Dyno似乎是CPU核心的虚拟单元。 我对吗? 还是值得运行一个node.js应用程序与集群模块?

如何在多台机器上群集Node应用程序

我正在使用Express js和节点群集来利用群集我也使用PM2进行进程和内存pipe理。 对于一台机器,它工作正常,但我的机器有两个核心,我想提供更多的核心。 所以我决定join3台机器,现在所有4台机器都使用LAN连接。 我也可以在networking浏览器中使用IP地址访问其他机器。 现在我想连接所有的机器,并希望共享他们的内核,以便我的应用程序最终拥有2 + 6 = 8个内核。 怎么可能? 有没有任何节点模块可以实现这一目标? 谢谢。

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