mongodb-gridfs下载文件报Sort exceeded memory limit of 104857600 bytes异常

本文主要是介绍mongodb-gridfs下载文件报Sort exceeded memory limit of 104857600 bytes异常,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

报错详细信息

com.mongodb.MongoQueryException: Query failed with error code 292 and error message 'Executor error during find command :: caused by :: Sort exceeded memory limit of 104857600 bytes, but did not opt in to external sorting.' on server 11.51.141.63:27017at com.mongodb.internal.operation.FindOperation.lambda$execute$1(FindOperation.java:670)at com.mongodb.internal.operation.OperationHelper.lambda$withSourceAndConnection$2(OperationHelper.java:564)at com.mongodb.internal.operation.OperationHelper.withSuppliedResource(OperationHelper.java:589)at com.mongodb.internal.operation.OperationHelper.lambda$withSourceAndConnection$3(OperationHelper.java:563)at com.mongodb.internal.operation.OperationHelper.withSuppliedResource(OperationHelper.java:589)at com.mongodb.internal.operation.OperationHelper.withSourceAndConnection(OperationHelper.java:562)at com.mongodb.internal.operation.FindOperation.lambda$execute$2(FindOperation.java:661)at com.mongodb.internal.async.function.RetryingSyncSupplier.get(RetryingSyncSupplier.java:65)at com.mongodb.internal.operation.FindOperation.execute(FindOperation.java:692)at com.mongodb.internal.operation.FindOperation.execute(FindOperation.java:86)at com.mongodb.client.internal.MongoClientDelegate$DelegateOperationExecutor.execute(MongoClientDelegate.java:191)at com.mongodb.client.internal.MongoIterableImpl.execute(MongoIterableImpl.java:135)at com.mongodb.client.internal.MongoIterableImpl.iterator(MongoIterableImpl.java:92)at com.mongodb.client.gridfs.GridFSDownloadStreamImpl.getCursor(GridFSDownloadStreamImpl.java:240)at com.mongodb.client.gridfs.GridFSDownloadStreamImpl.getChunk(GridFSDownloadStreamImpl.java:215)at com.mongodb.client.gridfs.GridFSDownloadStreamImpl.getBuffer(GridFSDownloadStreamImpl.java:277)at com.mongodb.client.gridfs.GridFSDownloadStreamImpl.read(GridFSDownloadStreamImpl.java:101)

解决方式(给fs.chunks集合的files_id字段加索引)如

db.fs.chunks.find();db.fs.chunks.getIndexes();
# 加索引
db.fs.chunks.createIndex({files_id: 1, n: 1}, {unique: true});

加上索引后问题得以解决!


针对网上说的

1、直接修改系统限制内存大小的变量,如

use admin
db.auth("adminuser","passwd")
db.adminCommand({setParameter:1, internalQueryExecMaxBlockingSortBytes:335544320})

执行这个命令需要admin用户认证成功,当时没有创建admin用户,也不好停掉MongoDB服务去创建admin用户,所以当时没有使用过此方式。当然不是所有的版本都有此变量,可以通过如下命令查询所有可修改的变量

db.adminCommand({getParameter: '*'})

如果查到了就可以通过以上命令修改变量值,当然如MongoDB版本是5.0以上的,也可以直接修改配置文件如

setParameter:internalQueryExecMaxBlockingSortBytes: 335544320

2、开启使用磁盘(allowDiskUse)如

db.getCollection('fs.chunks').aggregate([
{$group:{_id:"$title",count:{$sum:1},title:{$addToSet:"$title"},ids:{$addToSet:"$_id"}}},{$match:{count:{$gt:1}}}],
{allowDiskUse:true})

也可以从代码层面开启使用磁盘,具体可自行搜索一下。

具体的配置含义也没有说清楚,当时试了很多次还是不行。估计是某个配置项没有配好,或者是不适用GridFs下载问题!

3、找到具体报错的集合,然后添加合适的索引。

如上面解决方式,问题得以解决。

希望能帮助到您!

这篇关于mongodb-gridfs下载文件报Sort exceeded memory limit of 104857600 bytes异常的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/280750

相关文章

Go异常处理、泛型和文件操作实例代码

《Go异常处理、泛型和文件操作实例代码》Go语言的异常处理机制与传统的面向对象语言(如Java、C#)所使用的try-catch结构有所不同,它采用了自己独特的设计理念和方法,:本文主要介绍Go异... 目录一:异常处理常见的异常处理向上抛中断程序恢复程序二:泛型泛型函数泛型结构体泛型切片泛型 map三:文

解决idea启动项目报错java: OutOfMemoryError: insufficient memory

《解决idea启动项目报错java:OutOfMemoryError:insufficientmemory》:本文主要介绍解决idea启动项目报错java:OutOfMemoryError... 目录原因:解决:总结 原因:在Java中遇到OutOfMemoryError: insufficient me

maven异常Invalid bound statement(not found)的问题解决

《maven异常Invalidboundstatement(notfound)的问题解决》本文详细介绍了Maven项目中常见的Invalidboundstatement异常及其解决方案,文中通过... 目录Maven异常:Invalid bound statement (not found) 详解问题描述可

SpringBoot返回文件让前端下载的几种方式

《SpringBoot返回文件让前端下载的几种方式》文章介绍了开发中文件下载的两种常见解决方案,并详细描述了通过后端进行下载的原理和步骤,包括一次性读取到内存和分块写入响应输出流两种方法,此外,还提供... 目录01 背景02 一次性读取到内存,通过响应输出流输出到前端02 将文件流通过循环写入到响应输出流

C# List.Sort四种重载总结

《C#List.Sort四种重载总结》本文详细分析了C#中List.Sort()方法的四种重载形式及其实现原理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友... 目录1. Sort方法的四种重载2. 具体使用- List.Sort();- IComparable

Java Exception异常类的继承体系详解

《JavaException异常类的继承体系详解》Java中的异常处理机制分为异常(Exception)和错误(Error)两大类,异常分为编译时异常(CheckedException)和运行时异常... 目录1. 异常类的继承体系2. Error错误3. Exception异常3.1 编译时异常: Che

前端Visual Studio Code安装配置教程之下载、汉化、常用组件及基本操作

《前端VisualStudioCode安装配置教程之下载、汉化、常用组件及基本操作》VisualStudioCode是微软推出的一个强大的代码编辑器,功能强大,操作简单便捷,还有着良好的用户界面,... 目录一、Visual Studio Code下载二、汉化三、常用组件1、Auto Rename Tag2

MongoDB搭建过程及单机版部署方法

《MongoDB搭建过程及单机版部署方法》MongoDB是一个灵活、高性能的NoSQL数据库,特别适合快速开发和大规模分布式系统,本文给大家介绍MongoDB搭建过程及单机版部署方法,感兴趣的朋友跟随... 目录前言1️⃣ 核心特点1、文档存储2、无模式(Schema-less)3、高性能4、水平扩展(Sh

Python包管理工具uv下载python版本慢问题解决办法

《Python包管理工具uv下载python版本慢问题解决办法》uv是一个非常快的Python包和项目管理器,用Rust编写,使用热缓存安装Trio的依赖项的速度对比,:本文主要介绍Python包... 目录发现问题对于 MACOS / linux 用户 (zsh/bash):对于 Windows 用户:总

Python中的sort方法、sorted函数与lambda表达式及用法详解

《Python中的sort方法、sorted函数与lambda表达式及用法详解》文章对比了Python中list.sort()与sorted()函数的区别,指出sort()原地排序返回None,sor... 目录1. sort()方法1.1 sort()方法1.2 基本语法和参数A. reverse参数B.