我在windows环境下对MongoDB做了一个简单的测试。具有 ID (int32) 和 Buffer (byte[4096]) 的单个对象集合按顺序填充。在达到近 15G(总共 16G)RAM 后,环境出现故障。一些应用程序被杀死,桌面更改其分辨率,然后完全挂起。硬重启后,我在 mongo 日志中发现了很多这样的记录:
VirtualProtect failed (mcw) e:/Databases/+MongoDB/TestFS/TestFS.7 256400000000 4000000 errno:1455 分页文件太小,无法完成此操作。
MapViewOfFile 失败 e:/Databases/+MongoDB/TestFS/TestFS.26 errno:1450 系统资源不足,无法完成请求的服务。
此外,MongoDB 无法再连接(连接到任何数据库)。日记功能已启用。日志中没有任何错误。我只能通过删除日志和损坏的数据库来修复它。这与我希望在生产中看到的行为相去甚远,但我知道,存在大量的生产安装。所以我试图理解,我错过了什么或做错了什么。
对。让我们来看看我将如何运行生产 MongoDB 集群(是的,集群......你不想要只有一台服务器)
1)使用Linux。严重地。与 Windows 相比,内存管理等方面的可预测性要高得多。您也更有可能找到可以帮助您在 Linux 上调整 Mongo 服务器的人。
2)给它大量的内存。内存很便宜。我刚刚为 $job 指定了一些生产级服务器,它们是 36GB 的快速 ECC DDR3。
3)给它快速的磁盘。SAS 很好,我怀疑 SSD 可能会更好,但还没有专门测试过。
4)碎片。选择一个合适的分片键,并基于它在多个 MongoDB 节点之间进行分片。
5) 重要的。确保您有一组服务器,这些服务器仍然可以执行一致投票数。
6)真的很重要。保护它。更改默认管理员用户名和密码,并将其置于防火墙之后。
严重地。我认为您应该看看上面的几点,并阅读其中的一些生产部署。10gen 竭尽全力为 MongoDB 提供大量文档,我怀疑您没有完整阅读所有文档。
| 归档时间: |
|
| 查看次数: |
1354 次 |
| 最近记录: |