MongoDB和PHP-内存不足

MongoDB和PHP-内存不足,mongodb,mongodb-php,Mongodb,Mongodb Php,我知道,有几篇关于mongodb和内存的文章,但没有一篇能帮助我 我有一个相当大的数据库,大约40GB。我的服务器是一个Ubuntu 16.04,带有32GB RAM和一个ssd磁盘 现在,我在尝试插入新文档时收到以下消息: MongoDB\Driver\Exception\BulkWriteException [ Error ]: file /var/lib/mongodb/databasename.35 open/create failed in createPrivateMap (look

我知道,有几篇关于mongodb和内存的文章,但没有一篇能帮助我

我有一个相当大的数据库,大约40GB。我的服务器是一个Ubuntu 16.04,带有32GB RAM和一个ssd磁盘

现在,我在尝试插入新文档时收到以下消息:

MongoDB\Driver\Exception\BulkWriteException [ Error ]:
file /var/lib/mongodb/databasename.35 open/create failed in createPrivateMap (look in log for more information)
在日志文件中,我发现:

2017-07-25T18:20:58.154+0200 I NETWORK  [conn22] received client metadata from 127.0.0.1:46124 conn22: { driver: { name: "mongoc / ext-mongodb:PHP", version: "1.5.5 / 1.2.9" }, os: { type: "Linux", name: "Ubuntu", version: "16.04", architecture: "x86_64" }, platform: "cfg=0x30c9 posix=200809 stdc=201112 CC=GCC 5.4.0 20160609 CFLAGS="-g -O2" LDFLAGS="" / PHP 5.6.30" }
2017-07-25T18:20:58.189+0200 E CONTROL  [conn22] mmap private failed with out of memory. (64 bit build)
2017-07-25T18:20:58.189+0200 I -        [conn22] Assertion: 13636:file /var/lib/mongodb/database_name.35 open/create failed in createPrivateMap (look in log for more information) src/mongo/db/storage/mmap_v1/durable_mapped_file.cpp 271
2017-07-25T18:20:58.205+0200 I CONTROL  [conn22]
我有足够的磁盘空间:

Filesystem         Size  Used Avail Use% Mounted on
/dev/ploop42094p1  799G  299G  468G  40% /
devtmpfs            16G     0   16G   0% /dev
tmpfs               16G     0   16G   0% /dev/shm
tmpfs               16G  578M   16G   4% /run
tmpfs              5.0M   20K  5.0M   1% /run/lock
tmpfs               16G     0   16G   0% /sys/fs/cgroup
none                16G     0   16G   0% /run/shm
我认为记忆也是如此:

free -m
              total        used        free      shared  buff/cache   available
Mem:          32768        1235        7659         840       23873       31268
Swap:          1024         945          78

有没有办法解决这个问题?

可能不是你想听的,但你可以试试Object Rocket之类的托管服务。这似乎是一个需要深入了解MongoDBI内部运作的问题。但是,由于数据库相当庞大,它将非常昂贵。另一点是,我的客户不想在欧盟之外提供数据,因为美国的“所有数据都属于我们”政策。我认为除了谷歌以外,没有任何数据存储公司的政策。有趣的是,这不是对公司的看法,而是对爱国者法案的看法。但我不想开始一场政治讨论(错误的地点)。主要的一点也是价格。I 50GB hdd和16GB ram存储成本约为1000欧元/分钟。而我们目前配备400GB SSD和32GB Ram的服务器的价格仅为每分钟70欧元。这是一个hughe的区别。看起来您正在使用MMAPv1存储引擎。您的MongoDB版本是什么?您是否考虑过使用WiredTiger存储引擎?另外,请检查您的部署是否遵循和中的建议