Tag: 多用户

如何让我的nodejs应用程序服务于多个用户?

我正在使用nodejs和expressjs框架实现一个非常基本的网站。 这个想法是,用户进入网站,点击一个button,将在服务器中触发一个cpu密集型任务,并在完成任务后在浏览器上获取消息。 我感到困惑的是如何为每个用户完成这个任务,而不阻塞事件循环,因此,没有用户需要等待另一个完成。 另外,如何为每个用户使用已用资源的新实例(对象,variables..)。 玩完和阅读后,我碰到了孩子的过程。 基本上,我想为每个用户分派一个新的child_process,这样无论sorting需要多less时间,它都不会阻塞我的事件循环。 不过,我还不确定这是否是这种情况下最好的做法。 现在,我已经做了我想做的事情,但只有一个用户,但是当尝试启动另一个用户时,事情变得混乱,variables被共享。 我知道我不应该使用在模块中声明的全局variables,但是可以通过另一种方式使variables在单个模块中的函数之间共享,但是对于每个用户它们是不同的! 我知道这个问题可能听起来很基本,但我有点想念节点js是如何为不同的用户提供新的variables,与每个用户相关的对象。 总之,我的问题是:1-节点如何同时为多个用户服务? 我什么时候该如何分stream或执行一个新的subprocess,并且是每个用户还是基于cpu中的我的#个核心?如何分离我的应用程序中每个用户的资源,使得每个用户用户有他自己的计数器,电子邮件和其他对象和variables。 4-我什么时候需要,或者我必须杀死我的subprocess。 提前致谢。 码: var cp = require('child_process'); var child= cp.fork('./routes/mysort-module'); exports.user=function(req,res){ // child = new cp.fork('./routes/mysort-module'); // Should I make new child for each user? child.on('message',function(m){ res.send('DONE');} child.send('START PROCESS'); // Forking a cpu-intensive task in mysort-module.js } 在我的分拣模块中: var variables = require(…); //GLOBAL […]

Node.js – 处理数百个用户首选项

我正在学习node.js(我的网站背景主要是PHP),我很喜欢它,但我有以下问题。 在PHP和其他类似的语言中,每个请求都是脚本的一次性执行。 所有的用户首选项可以加载,等可以加载,没有问题,因为一旦脚本执行完成,所有的资源将被释放。 在node.js中,特别是在像chatroom这样的长时间运行的进程中(我使用的是socket.io),你将有成千上万的用户被一个进程处理。 假设我有一个200人的聊天室,并且如果消息来自用户认为是“朋友”的参与者,我想让消息突出显示,那么我将不得不循环200个用户以查看用户是否是朋友或不(特别是如果聊天只能发送给朋友,而不是公开)。 这不是真的很慢,特别是随着时间的推移? 有什么我错过了吗? 在我的小testing中,随着用户数量和消息数量的增加,服务器的响应能力明显下降。

如何运行pm2以便其他服务器用户能够访问该进程?

当我用pm2启动我的Nodejs应用程序时,其他服务器用户无法访问该进程。 即使我从一个自定义目录启动pm2(不是当前用户的~/ ,pm2默认使用的是什么): HOME=/var/www pm2 start app.js 任何用户都可以访问目录 (与~/比较),但其他服务器用户仍然无法访问该进程。 当其他服务器用户做pm2 list ,显示他有0个进程正在运行 – 但有(由另一个用户启动)。 而当其他用户尝试HOME=/var/www pm2 list ,CLI会抛出一个错误: events.js:72 throw er; // Unhandled 'error' event ^ Error: connect EACCES at errnoException (net.js:905:11) at Object.afterConnect [as oncomplete] (net.js:896:19) 所以我想知道如何确保用户能够访问其他服务器用户运行的pm2进程? 还是应该有不同的接近? 我想知道为什么每个服务器用户能够使git pull从Git存储库部署最新的源代码,但不能重新启动pm2过程之后? 只有启动pm2进程的用户才能重新启动它…奇怪。