Articles of 优化

MongoDB查询优化search文本

我有一个NodeJS开发的应用程序,它作为一个REST API使用,并从MongoDB中使用数据 在MongoDB中,我有一个名为“ftp”的集合,拥有超过1000万个具有以下结构的文档 { "_id" : ObjectId("59e7c66911506bd1725cf145"), "ip" : "72.32.177.76", "timestamp" : "2017-10-16T02:30:26-04:00", "data" : { "banner" : "220-FileZilla Server version 0.9.41 beta\r\n" } } “data.banner”字段是一个hased索引 从NoodeJs我做一个聚合查询,使用正则expression式筛选一个文本string,组和计算结果。 function getData(timeInit, table, textSearch, res) { MongoClient.connect(url, function (err, db) { if (err) throw err; db.collection(table).aggregate([ { $match: { 'data.banner': $regex:textSearch} }, { $group: { _id: '$data.banner', num: […]

节点JS花费很长时间发送初始数据

我正面临NodeJS的一个问题。 最初,我需要很长时间4-5秒才能得到任何更新。 节点的JS服务器是公开访问,它不是通过任何代理或任何补丁。 但一旦初始连接build立 – 更新即时。 我深入使用Chrome的networking工具 – 它说它正在等待数据。 看到附加的图像 我也粘贴我的app.js(节点应用程序)的代码供您参考。 var http = require('http'), url = require('url'), fs = require('fs'), amqp = require('amqp'), sys = require(process.binding('natives').util ? 'util' : 'sys'); var exchangeName = 'conferenceTest'; send404 = function (res) { res.writeHead(404); res.write('404'); res.end(); }; server = http.createServer(function (req, res) { var path = url.parse(req.url).pathname; switch […]

如何优化我的heroku webapp

我是networking开发新手,目前正在为我的投资组合build立自己的网站。 我的应用程序使用node,express和Heroku在线启动它。 不过,这个页面并不像我希望的那样平滑。 滚动和查看animation时,会丢失大量的帧。 我想知道我可以做些什么来使我的应用程序感觉顺畅。 我已经四处寻找解决scheme,但是我太新,以至于无法真正理解要做什么。 我试图用检查器来查看css或javascript文件是否通过瀑布insepctor减缓进程,但干了。 到目前为止,我已经压缩了文件并降低了所有图像的比例。 另外,整个网站是静态内容,所以我无法想象为什么它的运行如此缓慢。 任何帮助将非常感激。 有问题的网站

PM2生产优化

我只是尝试在“生产”环境中部署节点应用程序。 我使用这个命令使用PM2来运行应用程序。 pm2 start app.js –name <appname> 我的问题是: 为什么我看child_process我分叉的child_process的console.log ? 可以调用很多child_process.fork吗? 编辑1 基本上,应用程序使用chokidar来观看文件夹。 当有新文件时,它将检查文件types,然后执行以下任一项: 如果文件types是.FLV那么应用程序会将文档添加到mLab中承载的MongoDB集合中。 如果文件types是.PNG则应用程序将使用child_process.fork将文件上载到S3存储桶。 如果文件types是.MP4 ,应用程序将使用child_process.fork将file upload到S3存储桶,然后运行FFmpeg命令生成一个在另一个child_process.fork上运行的屏幕截图,然后触发上面的过程2 ,同时执行MongoDB更新另一个child_process.fork 。 这是代码片段 1. Chokidar Watcher(app.js) 编辑2 为我如何使用chokidar和分支subprocess添加了代码片段。

有没有办法在退出时在节点js中启动asynchronous操作?

操作过程中的节点js模块请求远程服务上的一些资源,退出时更好的释放。 我们知道有非常好的: process.on('exit', function() { // … }); 但是据说它不会等待任何asynchronous操作来完成。 所以问题是如果有任何解决方法(应该有一些,因为它是相当广泛的使用情况)? 也许一个人可以开始独立的过程或什么?

打破+返回与返回JavaScript Nodejs

我正在写一个nodejs堆,性能是非常重要的。 我有以下代码: while(true) if(x) do something return if(y) do … return if(z) do … else return 我被build议使用 打破 代替 返回 并在最后放置一个单一的返回以避免重复的代码并使其更具可读性。 是否有一个性能下降,如果是这样,是否有什么重要的? 换一种说法: 在循环中使用中断只是为了在循环之后使用返回,而不是首先使用返回吗?

如何做Redis树并优化它+ Node.js

我需要caching将由几个node.js工作人员使用的数据。 下面是这个数据的层次结构,它是三层深的: 每个类别都有相同的子类别,并且都是固定的大小。 每个“数据”包含4个字段,其中一个是唯一的ID。 会有相当多的“数据”插入和删除。 在Redis中实现这样的数据库的最好方法是什么? 哈希集cat + subcat,因为我有他们的固定数量,哈希集还为每个字段具有该唯一ID的数据becouse? 谢谢!

我怎样才能更好地优化这些数据库查询/functionstream?

我已经把我的手从游戏开发转移到写支持后端。 到目前为止,一切似乎都奏效了,但是当我写一个朋友系统的时候,我碰到了这个对我来说看起来很脏的functionstream程。 而且我确定我只是在这一点上一起黑客攻击。 任何node.js向导都会告诉我如何改进? 相当肯定我应该在Redis中caching玩家查询。 acceptfriend: function(req, res){ //Find our user User.findById( req.decoded._id, function(err, user){ //error occured if(err){ return res.status(401).send(err); } //no user found if(!user){ return res.status(401).json({ succes: false, message: 'no user found with that id' } ); } //Does the request exist? if( !_.any( user.social.friendRequests, {id: req.params.id} ) ){ return res.status(401).json( { succes: false, […]

NodeJS MySQL:测量查询执行时间

我在一个共享的主机平台,并希望限制在我的应用程序的查询,以便如果总的执行时间超过一定的数量在一个可变的时间段,那么我可以让应用冷静,然后恢复。 要做到这一点,我想知道我的每个查询需要多长时间,并在应用程序内进行pipe理,而不是通过外部分析。 我已经看到了在PHP查询前后logging时间( 甚至phpMyAdmin这样做 )的例子 ,但是这不会在NodeJS或asynchronous运行查询的任何东西。 所以问题是:我将如何去得到在NodeJS查询的实际执行时间? 为了参考,我使用这个模块来查询MySQL数据库: https : //github.com/felixge/node-mysql/

注释是否消耗内存和/或使用周期?

我正在为使用bash脚本,node.js和C的ARM系统的多个应用程序工作。我在开发时使用注释来跟踪代码中发生的情况或停用实际代码。 我的经验是每个额外的内存指针和处理器周期都会降低系统的性能。 为了优化,我应该删除生产代码中的所有注释还是不值得担心?