Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
连接上的MongoDB RAM消耗_Mongodb_Connection_Pymongo_Ram_Gridfs - Fatal编程技术网

连接上的MongoDB RAM消耗

连接上的MongoDB RAM消耗,mongodb,connection,pymongo,ram,gridfs,Mongodb,Connection,Pymongo,Ram,Gridfs,我正在使用pymongo向MongoDBgridFS+插入大量JSON以收集一些数据。 不久前我注意到MongoDB在使用单一连接时消耗了大量的RAM。一旦我关闭这个连接,它就会释放它。 连接内的RAM消耗总量约为10-12GB,不连接时为200MB。集合的实际大小实际上约为300MB,存储容量为10-18GBgridFS 为什么会这样?如何为任何大型操作打开新连接比为所有操作使用一个连接更少地依赖于资源? 它与日记有什么关系吗?为了便于理解,我必须将这个问题分解为多个小问题: 众所周知,Mon

我正在使用
pymongo
MongoDB
gridFS
+插入大量JSON以收集一些数据。 不久前我注意到MongoDB在使用单一连接时消耗了大量的RAM。一旦我关闭这个连接,它就会释放它。 连接内的RAM消耗总量约为10-12GB,不连接时为200MB。集合的实际大小实际上约为300MB,存储容量为10-18GB
gridFS

为什么会这样?如何为任何大型操作打开新连接比为所有操作使用一个连接更少地依赖于资源?
它与日记有什么关系吗?

为了便于理解,我必须将这个问题分解为多个小问题:

  • 众所周知,MongoDB非常需要RAM,它将尝试使用尽可能多的RAM
  • GridFS倾向于将文件存储在集合
    fs.chunks
    中,并将相应的元数据存储在
    fs.files
    中。存储在GridFS中的文件被分成256KB的块
  • 当您通过打开连接来读取GridFS数据时,必须将属于文件的块从磁盘加载到RAM中(如果它尚未出现在RAM中)。因此,RAM的使用量与存储的数据量成正比,更重要的是与GridFS数据访问的频率成正比。只要重新迭代GridFS,如果查询引用它,数据就会被拉入RAM

    如果您有一个用于大量GridFS数据的活动连接,那么您应该期待大量的RAM使用。但是如果您的查询频率较低(仅写,但很少读),则RAM使用率将相对较低。如果您主要是在写入数据,则请确保在中的操作完成后关闭连接

  • 打开连接的数量越多,RAM的使用就会增加
  • 这与日志记录无关
  • 注意:GridFS还支持分片,这将有助于解决RAM过度使用的问题


    希望这能澄清问题。

    我只是在写这些。我插入的数据也会被分块,读取后会正确关闭文件。