Node.js gridfs流下载文件CPU使用率
当将文件从Mongodb Gridfs流式传输到文件系统时,我遇到了cpu使用率高的问题。 我目前正在使用gridfs stream node.js模块,代码如下:Node.js gridfs流下载文件CPU使用率,node.js,mongodb,express,gridfs,gridfs-stream,Node.js,Mongodb,Express,Gridfs,Gridfs Stream,当将文件从Mongodb Gridfs流式传输到文件系统时,我遇到了cpu使用率高的问题。 我目前正在使用gridfs stream node.js模块,代码如下: //Main server file app.get('/download/:name', crud.download) //crud.js file exports.download = function(req, res){ var file = req.params.name var readstream =
//Main server file
app.get('/download/:name', crud.download)
//crud.js file
exports.download = function(req, res){
var file = req.params.name
var readstream = gfs.createReadStream(file);
readstream.pipe(res);
}
在较小的文件(~100mb及以上)上,cpu的使用率非常低,而在较大的文件(~1GB及以上)上,cpu的使用率达到90-100%,并保持不变,大大降低了下载速度,有时甚至会阻止整个下载。还有,有没有更好的方法来处理从Gridfs下载到文件系统的问题?我想听听你的意见。谢谢。到底是什么占用了CPU?Node,MongoDB?感谢您的回复,Node.js占用了大约65%的cpu,而mongo在下载过程中占用了大约30%。同样,这只会发生在较大的文件中。我已经在多台机器上试过了,我试过的每台机器都是一样的。我想知道GridFS对于如此大的文件的效率。遗憾的是,找不到太多关于它的信息(大多数示例/基准都处理从小到小的文件)。您是否在VPS中运行?不,不是在VPS中运行,我还应该提到,当上载我要下载的相同文件时,上载过程在node.js端使用少量cpu(~18%),并且上载成功完成。因此,问题与gridfs stream利用从gridfs到文件系统的文件流的方式有关,或者至少我认为是这样。我只有处理小文件和gridfs流的经验,这总是很有效。不适用于较大的文件,因此我无法提供太多帮助:(