Arquivo GridFS do MongoDB Tamanho grande para arquivos relativamente pequenos

Eu estou fazendo alguns testes para ver se podemos usar o GridFS no MongoDB para armazenar arquivos para um aplicativo futuro; Estou usando o driver C # do 10gen para "Carregar" um arquivo de 80Mb no banco de dados.

A primeira adição foi boa e levou cerca de 3 segundos, o que não é muito ruim na minha máquina de teste; no entanto adições futuras do mesmo arquivo levaram muito mais tempo, até 30 segundos, eventualmente, o MongoDB me disse que ficou sem memória e caiu.

Adicionando 10 arquivos, o tamanho de 80Mb resulta em 8 arquivos sendo criados para meu banco de dados antes que o sistema trava nomeado dbaseName.0 para dbaseName.7 com seus tamanhos de arquivo aumentando exponencialmente de 16Mb para 512Mb dos arquivos de 0 a 5, então os arquivos 6 e 7 são ambos 512Mb.

Esses arquivos chegam a pouco menos de 2Gb, obviamente adicionar o arquivo pela décima vez leva o dbase para mais de 2Gb, o que está além do limite da minha versão de teste de 32 bits.

Por que armazenar arquivos no valor de 800Mb consome mais de 2 GB? Existe um cenário que eu perdi em algum lugar?

O MongoDB mantém todo o GridFS na RAM constantemente? Em caso afirmativo, qual é o ponto do disco? Se eu tiver apenas 32Gb de RAM no meu servidor de produção, só posso armazenar 32Gb no GridFS?

Eu usei EnsureIndexes no meu objeto MongoGridFS e chequei a base de dados que mostra que os índices foram criados para o GridFS, então certamente o Mongo não deveria tentar encaixar o armazenamento de dados inteiro na RAM?

O MongoDB atende a todas as nossas necessidades, mas precisamos que ele seja capaz de manter uma grande coleção de arquivos; estou faltando alguma coisa óbvia?

Rastreamento de pilha:

Mon Oct 15 11:57:15 [conn15] insert busyNow.fs.chunks keyUpdates:0 locks(micros) w:112892 113ms
Mon Oct 15 11:57:15 [conn15] MapViewOfFileEx for /data/db/busyNow.7 failed with errno:8 Not enough storage is available to process this command. (file size is 536608768) in MemoryMappedFile::map

Mon Oct 15 11:57:15 [conn15]  busyNow.fs.chunks Fatal Assertion 16166
Mon Oct 15 11:57:17 [conn15] mongod.exe  ...\src\mongo\util\assert_util.cpp(124)                               mongo::fassertFailed+0x75
Mon Oct 15 11:57:17 [conn15] mongod.exe  ...\src\mongo\util\mmap_win.cpp(211)                                  mongo::MemoryMappedFile::map+0x4ce
Mon Oct 15 11:57:17 [conn15] mongod.exe  ...\src\mongo\db\mongommf.cpp(182)                                    mongo::MongoMMF::create+0xa3
Mon Oct 15 11:57:17 [conn15] mongod.exe  ...\src\mongo\db\pdfile.cpp(469)                                      mongo::MongoDataFile::open+0x141
Mon Oct 15 11:57:17 [conn15] mongod.exe  ...\src\mongo\db\database.cpp(280)                                    mongo::Database::getFile+0x34f
Mon Oct 15 11:57:17 [conn15] mongod.exe  ...\src\mongo\db\database.cpp(332)                                    mongo::Database::suitableFile+0x129
Mon Oct 15 11:57:17 [conn15] mongod.exe  ...\src\mongo\db\database.cpp(359)                                    mongo::Database::allocExtent+0x41
Mon Oct 15 11:57:17 [conn15] mongod.exe  ...\src\mongo\db\pdfile.cpp(1271)                                     mongo::outOfSpace+0x107
Mon Oct 15 11:57:17 [conn15] mongod.exe  ...\src\mongo\db\pdfile.cpp(1293)                                     mongo::allocateSpaceForANewRecord+0x5d
Mon Oct 15 11:57:17 [conn15] mongod.exe  ...\src\mongo\db\pdfile.cpp(1463)                                     mongo::DataFileMgr::insert+0x493
Mon Oct 15 11:57:17 [conn15] mongod.exe  ...\src\mongo\db\pdfile.cpp(1217)                                     mongo::DataFileMgr::insertWithObjMod+0x33
Mon Oct 15 11:57:17 [conn15] mongod.exe  ...\src\mongo\db\instance.cpp(761)                                    mongo::checkAndInsert+0x72
Mon Oct 15 11:57:17 [conn15] mongod.exe  ...\src\mongo\db\instance.cpp(821)                                    mongo::receivedInsert+0x4cd
Mon Oct 15 11:57:17 [conn15] mongod.exe  ...\src\mongo\db\instance.cpp(434)                                    mongo::assembleResponse+0x62a
Mon Oct 15 11:57:17 [conn15] mongod.exe  ...\src\mongo\db\db.cpp(192)                                          mongo::MyMessageHandler::process+0xe8
Mon Oct 15 11:57:17 [conn15] mongod.exe  ...\src\mongo\util\net\message_server_port.cpp(86)                    mongo::pms::threadRun+0x424
Mon Oct 15 11:57:17 [conn15] mongod.exe  ...\src\third_party\boost\boost\thread\detail\thread.hpp(62)          boost::detail::thread_data<boost::_bi::bind_t<void,void (__cdecl*)(mongo::MessagingPort *),boost::_bi::list1<boost::_bi::value<mongo::MessagingPort *
> > > >::run+0x9Mon Oct 15 11:57:17 [conn15] mongod.exe  ...\src\third_party\boost\libs\thread\src\win32\thread.cpp(16707566)  boost::`anonymous namespace'::thread_start_function+0x47
Mon Oct 15 11:57:17 [conn15] mongod.exe  f:\dd\vctools\crt_bld\self_x86\crt\src\threadex.c(314)                _callthreadstartex+0x1b
Mon Oct 15 11:57:17 [conn15] mongod.exe  f:\dd\vctools\crt_bld\self_x86\crt\src\threadex.c(292)                _threadstartex+0x64
Mon Oct 15 11:57:17 [conn15]

***aborting after fassert() failure


Mon Oct 15 11:58:33 [initandlisten] connection accepted from 127.0.0.1:56308 #16 (3 connections now open)

questionAnswers(2)

yourAnswerToTheQuestion