Tag: 包pipe理器

多用户应用程序同时具有〜200,000个连接

嗨Stackoverflow社区! 我负责一个将收集至less20万观众的事件的后端。 他们都可以参与一个非常简单的Q / A游戏,无论是使用移动应用程序或SPA网站。 没有这么多同时使用的用户的经验,我想知道哪种数据库,语言和服务器我应该用我的后端。 我在Node.js,MongoDB和socket.io方面有以前的经验,总是用小的项目,并且正在使用它们,但是我周围的一些人告诉我这些技术不能处理如此多的用户,并且可能会丢失一些数据包,甚至崩溃。 如果有更多的经验在这个领域有经验的人可以给我关于这个问题的build议,那将是非常棒的! 非常感谢所有! grebett

将stdin传递给subprocess时,NodeJS进程永远不会结束

我正在使用spawn来创build一个subprocess和pipe道数据: child process | parent process (main) ————————————— stdout —–> process.stdout stderr —–> process.stderr stdin <—– process.stdin 问题是,当将process.stdin传递给subprocessstdin ,当subprocess完成时,主进程不会结束。 代码看起来像这样(不是一个很好的例子,因为ps不使用stdin数据,我猜): var Spawn = require("child_process").spawn; var ps = Spawn("ps"); process.stdin.pipe(ps.stdin); ps.stdout.pipe(process.stdout); ps.stderr.pipe(process.stderr); 如果我删除process.stdin.pipe(ps.stdin)行,主进程结束,但stdin数据不再被pipe道。 pssubprocess结束后为什么主进程没有结束? 我怎么解决这个问题? 一个丑陋的解决办法是: ps.on("close", process.exit.bind(process)); 我不喜欢这个,因为我不想强制closures主进程,但是我想自然地closures(比如setTimeout(function(){}, 1000)等待1000ms,然后进程结束)。

Node.js内存错误致命错误:无效的数组长度分配失败 – 进程内存不足

我使用风帆0.10.5运行sails.js实例。 我在内存中存储了一些对象。 我经常遇到以下错误: 致命错误:无效数组长度分配失败 – 进程内存不足。 似乎有人遇到这个,并报告说这是在node.js v0.11.15中引入的 。 据我所知,这仍然是一个悬而未决的问题。 为了避免这种情况,我安装了节点v0.11.14并运行了v0.10.5。 但是,这个问题依然存在。 有人能告诉我,当这个错误发生在节点,并指出我如何能避免它的方向?

与JSPM重用同构/通用React组件

我正在尝试使用ExpressJs / ReactJs / JSPM堆栈来configuration同构/通用设置。 我目前的问题是,JSPM要求我将JSX模块添加到.jsx! 后缀为了传输它们,所以我的组件依赖期望文件名是从服务器模板到浏览器组件的区别。 有没有人遇到过这个问题并解决了它?

是否有可能结束节点stream块在某个字符?

我有一个相当大的XML文件,我stream到一个函数,就像这样: var stream = fs.createReadStream(__dirname + '/File.xml').pipe(myfunction); stream式传输function的内容并不重要,除了涉及将stream分割为所需的string并在其上运行decodeURIComponent 。 我遇到的问题是,一些块通过编码的string中途结束: 01 %E5%8A%87%E4%BC%B4%E7%89%%9E%8B1%E2%98%86%E6%A5%B5%E2%98%85%E6.csv 02 %E3%83%AA%E3%82%B9%E3%82%BC%B7%E5%8C%96%E5%9E%8B2%E2%98%86%E6.csv 03 %E6%97%A5%E5%8B3%E2%98%86%E6%A5%B5%E2%98%85%E6%9C%8D.csv 04 %E6%9C%8D%E7%9D%B1%9A%E5%9E%8B4%E2%98%86%E6%A5%B5%E2%98%85%E6%9C%8D.csv 05 %E5%90%8D%E4%BB%98%E6%89%87%E5% 正如你所看到的,最终的文件名是通过一个编码字符中途截断的。 是否有可能迫使stream块结束在某些字符或正则expression式组,例如。 .csv ? 我还没有在其他地方find解决办法,这使我相信我采取了错误的做法。 另一方面,我可以简单地将每个缓冲区的输出写入一个hugeString ,然后对其进行操作,但是我觉得这跟Node的stream所提供的其他好处并不hugeString 。

使用Dynos在Heroku上缩放Node.js应用程序

我想更好地理解在Heroku上扩展Node.js服务器。 我有一个应用程序,处理大量的数据,并已遇到一些内存问题。 如果Node.js服务器升级到2个dyno,这是否意味着我的应用程序能够在一个线程上处理高达1.024 GB的内存? 我的理解是,单个节点线程的内存限制为〜1.5 GB,超过了2x dyno的限制。 现在,假设我升级到性能-M dyno(2.5 GB内存),是否需要使用集群来充分利用2.5 GB内存? 此外,如果对我的Node.js应用程序提出了大量数据请求,而这些数据在处理的时间超过了分配给该群集的内存量,那么进程会使用分配给另一个群集的某些内存,它只是抛出一个错误?

为什么节点JS应用程序在连续运行6天后显示内存使用量增加?

我正在使用NodeJS进行生产,并将其部署在Nginx后面的数字海洋服务器中。 我有一个基于Express JS的Web服务器。 当我开始使用18%的内存。 现在内存占用率为49%,六天后。 我想知道内存是否在NodeJS中泄漏? 如何在NodeJS中进行内存分析,得出所有正在创build的对象都被安全清理的V8结论? 或者应用程序显示增加的内存使用情况是否正常? 如果是,为什么? 如果不是,那么NodeJS内存泄漏是否会有其他原因呢?

Node.js在pipe道中泄漏

我为我的微服务系统写了一个网关。 网关是用node.js编写的 该网关将请求转发给微服务器,并在得到处理结果后回应客户端。 但是这个网关消耗的内存不断增加,每小时增加24Mb。 你能帮我澄清一下为什么:以下是代码: var express = require('express'); var requestify = require('requestify'); var app = express(); var request = require('request'); var config = require('./config.js'); var API_ERROR = 'error'; var DISCOVERY_NOTHING = 'nothing' ; var TIMEOUT = 10000 ;//ms function registerEntry(path,entryId) { app.use(path, function(req, res) { requestify.get(config.discovery+"?service_id="+entryId, {timeout:TIMEOUT}).then( function(response) { var apiUrl = response.getBody() ; […]

为什么要破坏stream?

我看到一些在可写stream中pipe道可读stream的模块,如果发生错误,他们使用destroy方法: const readable = fs.createReadStream("file"); const writable = fs.createWriteStream("file2"); readable.pipe(writable); readable.on("error", (error) => { readable.destroy(); writable.destroy(); writable.removeListener("close"); callback(error); }); writable.on("error", (error) => { readable.destroy(); writable.destroy(); writable.removeListener("close"); callback(error); }); 什么是摧毁stream和消除可写入streamclosures事件的必要性? 如果我不这样做,会发生什么? 谢谢。

如何用node.js模拟bash进程replace?

假设我有1.js : process.stdout.write("Hello world.\n") 和2.js : process.stdout.write( require("fs") .readFileSync(process.argv[2]) .toString() .replace(/Hello/,"Goodbye") ) 并可以在bashterminal内执行以下命令获取2.js输出: $ node 2.js <(node 1.js) Goodbye world. 我怎样才能模拟相同的过程替代机制,而无需bash中介? 我应该在3.js写什么? var child_process = require("child_process") var cp1 = child_process.spawn("node",[__dirname + "/1.js"]) var dev_fd_pipe = ??? // How do I create it? var cp2 = child_process.spawn("node",[__dirname + "/2.js",dev_fd_pipe]) cp2.stdout.pipe(process.stdout)