Размер файла MongoDB GridFS для относительно небольшого файла

Я делаю несколько тестов, чтобы увидеть, можем ли мы использовать GridFS на MongoDB для хранения файлов для будущего приложения; Я использую драйвер 10gen C # для «загрузки» 80 Мб файла в базу данных.

Первое дополнение было в порядке и заняло около 3 секунд, что не так уж плохо на моей тестовой машине; однако добавление того же файла в будущем заняло гораздо больше времени, до 30 секунд, в конце концов MongoDB сказал мне, что ему не хватило памяти и он вышел из строя.

Добавление 10 файлов размером 80 МБ приводит к созданию 8 файлов для моей базы данных до того, как произойдет сбой системы с именем dbaseName.0 до dbaseName.7, причем их размеры будут экспоненциально увеличиваться с 16 МБ до 512 МБ для файлов с 0 по 5, тогда файлы 6 и 7 будут одновременно 512Mb.

Эти файлы имеют размер чуть менее 2 ГБ, очевидно, что при добавлении файла в 10-й раз база данных превышает 2 ГБ, что превышает предел моей 32-битной тестовой версии.

Почему хранение файлов объемом 800 МБ занимает более 2 ГБ? Есть ли настройка, которую я где-то пропустил?

Сохраняет ли MongoDB всю GridFS в оперативной памяти постоянно? Если да, то в чем смысл диска? Если на моем производственном сервере только 32 ГБ оперативной памяти, могу ли я хранить только 32 ГБ в GridFS?

Я использовал EnsureIndexes для моего объекта MongoGridFS и проверил базу данных, которая показывает, что индексы были созданы для GridFS, так что, конечно, Mongo не должен пытаться вписать все хранилище данных в оперативную память?

MongoDB отвечает всем нашим потребностям, но нам нужно, чтобы она могла содержать большую коллекцию файлов; я что-то упускаю очевидное?

Трассировки стека:

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)

Ответы на вопрос(2)

Ваш ответ на вопрос