Articles of 节点集群

节点集群与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 […]

debugging节点集群中的未捕获exception(ECONNRESET)

在使用集群模块的node.js应用程序中,我间歇性地看到类似这样的错误: events.js:71 throw er; // Unhandled 'error' event ^ Error: read ECONNRESET at errnoException (net.js:863:11) at TCP.onread (net.js:524:19) 这使我的整个应用程序,到目前为止,我已经能够处理这些的唯一方法是通过绑定一个process.on('uncaughtException') 。 我想找出潜在的原因,但上面的堆栈跟踪是相当无用的。 有什么方法可以找出造成这些exception的原因吗? 我应该注意到,我只在集群中看到这些信息,而不是工作人员,这让我怀疑它们与集群模块向工作人员分配连接的方式有什么关系。

我如何处理集群的Socket.IO房间?

我有一个服务器与集群工作,并使用socke.IO工作我使用粘滞会话,但我有我的房间有问题(我不知道我做的方式是最好的select):集群正在实例化进程,每个进程都有特定数量的房间。 服务器 过程1 会议室1 室2 房间N 过程2 会议室1 室2 房间N 我做的连接一些用户到房间(只有一个进程)的方式是使用路由,在这里用户访问一个页面,当他试图与Socket.io连接时,我检查URL和插入的信息他在一个房间里。 我的问题是使用集群来实现这个服务器我不能在特定的房间中插入用户,因为有一些房间只存在于特定的进程中,粘滞的会话把他放在另一个进程中。 我怎样才能把用户放在另一个进程的房间? 此外,使用只能看到他在服务器上的过程的路线,我想显示页面中的每个房间。 我已经阅读了Redis-Adapter,但是在使用Socket.io + Cluster(Sticky-session + redis-adapter)+房间的github上找不到解决scheme。 按照我的代码分享我所做的: //Cluster.Master with simplified Code if (cluster.isMaster) { var workers = []; // Spawn workers. for (var i = 0; i < num_processes; i++) { spawn(i); } // Create the outside facing server listening on our […]

如何保持共享节点集群中所有节点进程的variables?

似乎所有的节点工作进程都在工作,就好像它正在执行同一个应用程序的新副本一样。 但是想保留节点集群中所有节点工作者(subprocess)共享的variables。 有一个简单的方法来做到这一点?