Tag: 性能

快速更新大量数据

我已经在Nodejs中做了一个应用程序,每分钟调用一个端点并获取一个包含大约100000个元素的json数组。 我需要插入这个元素到我的数据库,如果该元素不存在,我插入列“点”值设置为0。 到目前为止,我有一个cron作业和简单的upsert查询。 但是这么慢, var q = async.queue(function (data, done) { db.query('INSERT INTO stat(`user`, `user2`, `point`) '+data.values+' ON DUPLICATE KEY UPDATE point=point+ 10',function (err, result) { if (err) throw err; }); },100000); //Cron job here Every 1 minute execute the lines below: var values='' ; for (var v=0;v<stats.length;v++) { values = '("JACK","' + stats[v] + […]

与亚马逊lambda的邮编。 为什么它慢?

我想用s3桶使用亚马逊lambda来获得性能文件压缩。 我想要压缩的文件在一个桶中。 我正在testing的lambda应该获取文件path,并在同一个存储桶中创build一个zip文件。 我正在使用这个库https://github.com/orangewise/s3-zip ,我testing它就像这个例子: https : //github.com/orangewise/s3-zip/blob/master /aws_lambda.md 我只是运行一个testing,给出两个文件的path作为input。 其中一个有2 MB和第二个58 KB,它们是docx和doctypes。 testing事件如下所示: { "region": "eu-west-1", "bucket": "bucket_name", "folder": "folder_name/", "files": [ "file1.doc", "file2.docx" ], "zipFileName": "test.zip" } 我有这个testing报告 START RequestId: xxx Version: $LATEST 2016-07-26T20:40:02.084Z xxx event { region: 'eu-west-1', bucket: 'bucket_name', folder: 'folder_name/', files: [ 'file1.doc', 'file2.docx' ], zipFileName: 'test.zip' } 2016-07-26T20:40:02.765Z xxx […]

如何最有效地search数据? (RAM或MongoDB中的对象)

在nodeJS服务器的内存中加载了40mb文本的静态集合的情况下, 每当你的web客户端要求search(1000个元素来查看),哪个方法是最优的? 查询mongoDB数据库 对已经在RAM中的集合执行一个.find(),这个集合将parsing1000个元素,在那个元素中寻找多个不同的string 在开始实现一个复杂的.find()函数之前,我正在寻找性能最高的方法。

性能套接字nodejs + mysql

我正在开发一个由node.js中的服务器组成的应用程序,基本上是一个侦听传入连接的套接字。 数据到达我的服务器,来自GPS跟踪器(约30),每发送每条logging5条logging,所以在一分钟内将有5*30 = 150logging,在一小时内,我将有150*60 = 9000logging,在一天9000*24 =216000和一个月内216000*30 = 6.480.000万的logging。 除了经纬度之外,我还要在数据库(MySql)中存储每个跟踪器的累积距离。 每个跟踪器发送到服务器的位置,每次我收到数据时,我必须计算两个点之间的kms(当它有数百万条logging时减less对数据库的工作)。 所以问题是, 总结这些公里并存储它的正确方法是什么? 我想总结整个数据库不是一个解决scheme,因为在数百万条logging中会很慢。 也许,每次我必须存储一个新点(每分钟150次), 我可以在数据库中select最后一个logging,然后将累积公里和新距离计算在一起?

在Nodejs Mongodb,又一个插入性能

我正在学习nodejs和mongodb,只是在使用ramdrive的单个低端笔记本电脑上testing插入mongodb的性能(以后用redisreplace它),结果每秒只有465个插入。 每个插入只有xyz值不能超过12个字节的数据。 var mongodb = require('mongodb'); var client = mongodb.MongoClient; var url = 'mongodb://localhost:2019/evdb2'; client.connect(url, function (err, db) { if (err) { console.log('fail:', err); } else { console.log('success:', url); var collection = db.collection('tablo'); collection.remove(); // var bulk = collection.initializeUnorderedBulkOp(); //benchmark insert var t = 0; t = new Date(); var ctr = 0; for (var […]

对高度请求的队列进行Firebase优化

基于firebase的游戏,其中每个用户在同一个waitingList上推送一个请求,以便一个nodeJS服务器为每两个等待的玩家分别准备一个循环游戏。 我在nodeJS上使用Firebase JS v3: var ref = firebase.database().ref(); //this is where we populate rounds var gamesRef = ref.child('games'); //users path var usersRef = ref.child('users'); //waiting queue var waitingRef = ref.child('waitingList'); //listen for each new queued user waitingRef.on('child_added', function(snap){ waitingRef.transaction(function(waitingList){ if(waitingList !== null){ var keys = Object.keys(waitingList); //take two players if(keys.length >= 2){ //prepare a new […]

在Node.js同步/asynchronous性能和速度移动100.000 +文件

我试图找出最快的方式,而不影响性能很多同时或asynchronous移动100.000 +文件使用Node.js 我做了同步和asynchronoustesting与3个不同的循环forEach async.each和for 。 循环迭代不会影响定时结果。 影响性能和速度的最重逻辑是同步或asynchronous移动文件。 testing用例显示,同步renameSync()比20%慢,然后asynchronousrename() 。 同时asynchronousrename()使用3倍以上的CPU能力,然后同步renameSync() 。 我是否正确地认为使用同步renameSync()会更明智一些,因为asynchronousrename()速度提升并不那么重要,并且等于20%。 虽然asynchronous版本的CPU使用率开销似乎很大 – 300%? 还是我错过了什么? 也许在速度/性能方面有更好的解决方法。 时间: eachAsyncRenameAsync() node rename.js 1.60s user 11.20s system 280% cpu 4.559 total node rename.js 1.65s user 11.82s system 284% cpu 4.732 total node rename.js 1.64s user 11.84s system 292% cpu 4.606 total eachSyncRenameSync() node rename.js 0.69s user 5.01s […]

nodeJS / Electron呈现比Chrome更慢的页面

我们正在build立一个电子餐厅POS系统(nodeJS 7.4.0 / Electron 1.6.11)。 对于POS系统来说,速度和可靠性是最重要的两个要求,在花了一些时间来构build应用之后,我们不再确定Electron是否适合我们。 速度似乎是主要问题。 对于testing,我们已经构build了一个应用程序,只显示2“你好世界”的HTML页面,没有任何额外的JavaScript或任何其他资产。 在现代iMac上运行时,在页面之间切换时会有一个很短的延迟,并且应用程序在页面加载之间闪烁白色。 在运行Windows 7的较早版本的PC上,只需要1秒即可在这两页之间切换。 在空白的“Hello World”页面上加载mac的时间是167ms。 现在,直接在Chrome浏览器中运行这两个页面,即可立即加载页面,无需任何加载时间,页面加载之间也不会出现白色闪烁。 networking巡视员40ms。 速度的差异是更加重要的更复杂的页面加载JavaScript文件和图像(即使一切都在本地加载) Electron和Chrome的加载时间大得多的原因是什么,我们会怎么做?

为什么当我同时发送50000多个查询时,我的node.js应用程序会“挂起”?

转移到其他问题 这是关于这个话题的最后一个问题 。 我从等式中删除了Express,并且通常清除了这个问题。 在你说出“傻瓜,串联”或类似的东西之前,我想提一下,这个代码永远不会用在生产上。 我search了几天,并进行testing,等等,现在我需要一些帮助。 如果你想看到更高层次的问题 – 在这里。 testing台: Windows 10 Mongo 3.2.11 节点6.11.3 Express 4.15.4 问题: 我有100000个元素,我想用find / findOne / whatever来检查一些集合。 当我这样做时: Mongo很好 – 用日志,mongostat检查并简单地连接它并查询一些事情。 节点是部分正常 – 检查与一些延迟console.log工作正常, 但如果我试图打开我的应用程序使用浏览器(这就是为什么我包括expression框架标签部分)它的加载,直到我跑到服务器超时。 有一个最简单的设置页面,没有任何连接到数据库或类似的东西: router.get('/',function(req, res) { res.send({result:"OK"}); }); 它挂起。 我什至手动赶上服务器超时检查这一点。 问题是为什么? 一切都是asynchronous的,所有的“资源”都很好,工作。 问题是什么? PS的Mongostats显示有趣的事情 – 首先它显示每行添加2000-3000查询,然后0,0,0 …再次几千,然后再一次0。 这是一个粘贴 这是我的代码,如果你想要像我一样testing var t = setTimeout(function () { console.log("Timeout […]

任何使用LISTEN&NOTIFY(或NodeJS)实时监控Postgresql查询更改的方法?

所以我有一个自定义Postgresql查询,检索指定的经度纬度半径内的所有行,如下所示: SELECT *, earth_distance(ll_to_earth($1,$2), ll_to_earth(lat, lng)) as distance_metres FROM RoomsWithUsers WHERE earth_box(ll_to_earth($1,$2), $3) @> ll_to_earth(lat, lng) ORDER by distance_metres; 在我的节点服务器中,我希望能够在每次查询中的行数发生变化时得到通知。 我已经研究过使用诸如pg-live-query之类的节点库,但是我更愿意使用与现有的Postgres LISTEN / NOTIFY一起工作的pg-pubsub,以避免不必要的开销。 不过,据我所知,PostgreSQL TRIGGERs只能在UPDATE / INSERT / DELETE操作上工作,而不是在任何特定的查询上。 有什么办法来完成我在做什么?