MongoDB GridFS-Datei Große Größe für relativ kleine Dateien

Ich mache einige Tests, um zu sehen, ob wir GridFS in MongoDB verwenden können, um Dateien für eine zukünftige Anwendung zu speichern. Ich verwende den C # -Treiber von 10gen, um eine 80-MB-Datei in die Datenbank hochzuladen.

Die erste Zugabe war in Ordnung und dauerte ca. 3 Sekunden, was auf meinem Testgerät nicht so schlimm ist. Zukünftige Ergänzungen der gleichen Datei dauerten jedoch viel länger. Bis zu 30 Sekunden später teilte mir MongoDB mit, dass der Speicher voll und der Computer abgestürzt ist.

Durch das Hinzufügen von 10 Dateien mit einer Größe von 80 MB werden 8 Dateien für meine Datenbank erstellt, bevor das System mit den Namen dbaseName.0 bis dbaseName.7 abstürzt, wobei die Dateigrößen exponentiell von 16 MB auf 512 MB von den Dateien 0 bis 5 zunehmen und die Dateien 6 und 7 beide 512 MB.

Diese Dateien haben eine Größe von knapp 2 GB. Wenn Sie die Datei zum zehnten Mal hinzufügen, steigt die Datenbank auf über 2 GB, was über der Grenze meiner 32-Bit-Testversion liegt.

Warum nimmt das Speichern von Dateien im Wert von 800 MB mehr als 2 GB in Anspruch? Gibt es eine Einstellung, die ich irgendwo verpasst habe?

Hält MongoDB das gesamte GridFS konstant im RAM? Wenn ja, wozu dient die Festplatte? Wenn ich nur 32 GB RAM auf meinem Produktionsserver habe, kann ich dann nur 32 GB in GridFS speichern?

Ich habe EnsureIndexes für mein MongoGridFS-Objekt verwendet und die Datenbank überprüft, aus der hervorgeht, dass Indizes für GridFS erstellt wurden, sodass Mongo nicht versuchen sollte, den gesamten Datenspeicher in den Arbeitsspeicher zu integrieren.

MongoDB erfüllt alle unsere Anforderungen, aber wir benötigen es, um eine große Dateisammlung speichern zu können. Vermisse ich etwas Offensichtliches?

Stack Trace:

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)

Antworten auf die Frage(2)

Ihre Antwort auf die Frage