【问题标题】: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 } );
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-07-26
        • 1970-01-01
        相关资源
        最近更新 更多