【问题标题】:When downloading a large file from GridFSBucket mongodb gets Sort exceeded memory limit error从 GridFSBucket mongodb 下载大文件时出现排序超出内存限制错误
【发布时间】:2023-02-17 13:22:50
【问题描述】:
我正在尝试从 gridFs 下载一个大文件(大于 100 MB):
ObjectId objectId = new ObjectId(item.RawDataFileId);
file = gridFsBucket.DownloadAsBytes(objectId);
我收到此错误:
MongoDB.Driver.MongoCommandException: Command find failed: Executor error during find command :: caused by :: Sort exceeded memory limit of 104857600 bytes, but did not opt in to external sorting..
该应用程序(.net 核心)正在 Windows 服务上运行(如果它很重要),我只在服务器上收到此错误,在本地环境中一切正常。
【问题讨论】:
标签:
c#
.net
mongodb
.net-core
gridfs
【解决方案1】:
我和我的工作人员很久以前遇到过同样的问题,我们在 Stack Overflow/Google 上没有发现任何合理的问题和/或关于它的任何细节。
所以我们在其他环境(不是开发/测试)中调查这个问题,发现问题不再发生。
在继续调查这个问题之后,我开始清理测试服务器本身的空间(问题发生的地方)并且它开始工作而没有任何进一步的错误(Althouse 甚至在没有足够的空间之前)。
仍然不能指责它发生的原因,但我鼓励您检查磁盘空间。
附言如果您确实发现了它发生的原因,请将其张贴在这里,因为没有关于此错误的足够详细信息。
【解决方案2】:
确保 fs.chunks 有正确的索引。 (它应该有索引,如果没有则明确创建索引)
db.fs.chunks.createIndex( { files_id: 1, n: 1 }, { unique: true } );