Tag: multithreading

尝试缩放节点群集后,phantomjs节点崩溃

相关的GitHub问题: https : //github.com/sgentle/phantomjs-node/issues/280 我有一个简单的应用程序,执行以下操作: var phantom = require('phantom'), express = require('express'), serve = express(); serve.get('/foo', function (req, res) { try { phantom.create(function (ph) { console.log('Phantom browser created w/ pid: ', ph.process.pid); ph.onError = function (msg, trace) { var msgStack = ['PHANTOM ERROR: ' + msg]; if (trace && trace.length) { msgStack.push('TRACE:'); trace.forEach(function (t) { […]

NodeJS读取和写入线程/工人的CSV

我目前有一个nodejs脚本,它从CSV文件中读取数据,然后根据每行数据写入许多不同的CSV文件。 有300个CSV(大约40Gbs价值)处理,所以我添加asynchronous到我的脚本读取和写入数据同时跨越所有内核。 async.mapLimit(filePaths, 4, streamZip, function (err, results) { console.log('finished'); }); 但事实certificate,这不是asynchronous。 这个代码实际上需要更多的时间来完成,而不是单独处理每个文件,因为它只使用单个核心。 似乎有许多不同的方式来使用更多的核心群集 , subprocess , networking工作者和工人农场 还有其他问题像这样问 但他们似乎都希望使用HTTP或Express,并作为服务器运行,或者他们调用像ls这样的外部程序。 而不是像在Python中那样运行一个多处理池。 任何人都可以提供一个例子或帮助如何使用线程或进程,并行读取多个CSV文件,并写入相同的fs.createWriteStreams? 谢谢 更多我的代码在这里: function streamZip(filePath, callback) { var stream = fs.createReadStream(filePath) .pipe(unzip.Parse()) .on('entry', function (entry) { var fileName = entry.path; entry.pipe(csvStream) }) var csvStream = csv() .on("data", function(data){ var identifier = data[0]; if (identifier […]

kue以“群集”模式多次处理预定作业

我已经设置了kue来运行Cluster模块,该模块为每个CPU核心提供了一个kue的subprocess。 当调度程序插入every键到redis时,一切似乎都是按顺序的 – every运行只有一个键集。 但是,当触发作业处理的时间到来时,所有subprocess(工作者)开始处理处理逻辑,这导致作业具有由单个“调度程序”条目触发的多个实例。 当以编程方式触发kue的新作业时,似乎不会发生此症状,使用kue API时也不会发生这种情况。 请指教。 主引导代码 var cluster = require('cluster'); var numCPUs = require('os').cpus().length; if (cluster.isMaster) { require('./init.js'); for (var i = 0; i < numCPUs; i++) { cluster.fork(); } cluster.on('online', function (worker) { console.log('Worker ' + worker.process.pid + ' is online'); }); cluster.on('exit', function (worker, code, signal) { console.log('Worker ' + […]

在节点上加载一个负载

我们有一个C#Web API服务器和一个Node Express服务器。 我们从C#服务器发出数百个请求到节点服务器上的路由。 节点服务器上的路由确实需要大量工作,并且通常不会返回6-8秒。 同时做出数百个这样的请求似乎会导致节点服务器失败。 节点服务器输出中的错误包括socket hang up或ECONNRESET 。 从C#方面的错误说 由于目标机器主动拒绝,所以不能build立连接。 处理不可预知数量的请求后发生此错误,这导致我认为它只是重载服务器。 在C#端使用Thread.Sleep(500)可以让我们获得更多的请求,并且在等待时摆弄或多或less的成功,但是线程hibernate很less有正确的答案,我认为这种情况是没有例外。 我们是不是把太多的压力放在Node服务器上? 这只能通过负载均衡或某种forms的集群来解决吗? 如果还有其他的select,它会是什么样子? 我开始探索的一条path是node-toobusy模块。 如果我返回503,下面的代码应该是什么过程? 我应该Thread.Sleep ,然后重新提交请求?

如何保持视图响应

我在Node.js , React , Express和Socket.IO有一个单页面的应用程序,其数据stream划分如下: AC#服务器应用程序通过Socket.IO提供feed.js数据。 feed.js也负责将数据转向(在更新数据结构之后,将正确的表示呈现给app.js)并将其提供给app.js以在浏览器中显示。 // Handle real-time incoming messages from c# clients. socket.on('data', function (data) { broadcast(data, socket); }); function broadcast(message, sender) { //process.stdout.write("Full message " + message.toString() + "\n"); //…To app.js onChangeHandler(stock.symbol, 'stock', stock); 在这种情况下,在实时负载下,浏览器有时不会对数据造成太大的影响,而是会影响显示效果。 换句话说,我仍然可以看到数据更新,但是在浏览器上的鼠标点击不能交互处理。 作为“桌面开发人员”的正常反应是通过创build额外的计算线程来保持计算(模型)与视图分离 – 视图已经在其自己的线程上运行。 不过,我已经读了Node.js(和配套)是单线程的。 似乎Socket.IO似乎没有这个限制。 想知道Node.js等方面的习惯是编写实时应用程序,这些应用程序在数据和GUI交互中都可以在Web浏览器上响应 。 一个例子或链接到一个将有所帮助。

如何在Java中使用Vert.X运行CPU密集型并行任务

我想运行Java运行CPU密集型并行任务,但为了避免比赛条件的复杂debugging,我决定尝试一个asynchronous程序模型 。 我有Node.JS的经验,我知道asynchronous的东西是如何工作的,我理解事件循环。 我想我不明白Vert.x中的工作者Verticles 。 想象下面的Java代码有3个CPU密集型进程(方法slowProcess())。 我怎样才能并行计算a,b和c? 是asynchronous模型适合这个,还是我应该使用正常的线程? asynchronous模型仅用于I / O操作吗? public class Race { public static void main(String[] args) throws Exception { long a=0, b=0, c=0; System.out.print("starting … "); //start the race // these 3 things should run in parallel a = slowProcess(a); b = slowProcess(b); c = slowProcess(c); // this should run after […]

使用LLVM在JXcore中可用的节点插件

如果这不是发布此问题的正确位置,或者与之前提出的问题类似,我很抱歉。 我正在做一些研究,如何把Web界面放在我想要启动的C ++项目上。 我遇到了Node.js,并使用V8引擎检出了一些插件。 我的想法是将业务逻辑(DB(sqlite),CRM,CMS等)路由到C ++后端,并在Node中处理像websocket连接,validation等内容。 JXcore在纸上有非常有吸引力的规格,所以我非常有兴趣尝试一下,但是我不确定我的插件会受到影响,看到JXcore的未来目标是从V8转向LLVM。 希望有可用的选项来桥接JS与C ++。 所以,基于上述,我有以下选项可用: 在Node中做一切(无C ++插件) 使用JXcore或节点和c + +插件没有multithreading 使用JXcore或Node,并在我的C ++插件中使用libuv实现multithreading 在JXcore中做所有事情(没有C ++插件) 在你看来,上面的哪一个select会是更好的performance方式呢? 我也希望上述的任何替代选项。

如何处理Node.js中的密集任务

让我们开始说我是Web开发新手。 我正在研究一个我selectNode.js作为服务器运行时环境的项目。 从我所了解的Node.js是单线程的事件为基础的。 所以对于处理很多小任务来说很好,但是处理密集型任务可能会导致一些阻塞。 我应该如何实现密集的任务处理程序,将不会阻塞服务器的工作? 我想在服务器上实现另一个应用程序,只要我的node.js应用程序要求,这个应用程序将处理密集的任务。 (这甚至可以在PHP或ASP或Node.js的其他实例中实现),这是合理的吗?

什么是meteor的线性执行模型?

在meteor文件中 ,它指出: 在Meteor中,您的服务器代码在每个请求中运行在单个线程中,而不是以Node的典型asynchronouscallback方式运行。 我们发现线性执行模型更适合Meteor应用程序中典型的服务器代码。 与Node相比,这个线性执行模型是什么?

如果所有node.js的工作线程都忙,会发生什么情况

我尝试了解node.js是如何工作的,尽pipe我已经阅读了这篇文章: 何时使用线程池? 我不知道如果所有工作线程都忙,并且另一个asynchronousI / O操作准备好执行会发生什么。 如果我有这个http://www.future-processing.pl/blog/on-problems-with-threads-in-node-js/文章的权利,事件循环被阻止,直到一个工作线程是免费的照顾一个额外的I / O操作。 这意味着如果五个用户试图同时访问一个网页(比如他们的configuration文件页面可以说需要一个数据库查询),第五个用户将被阻塞,直到第一个数据库查询完成,这个工作线程又是空闲的?