技术开发 频道

MongoDB生产环境性能和可靠性注意事项

  磁盘和存储系统

  虚拟内存

  为你的系统分配虚拟内存。分配虚拟内存可以避免内存争抢问题,同时可以阻止Linux系统的OOM Killer杀死mongod。

  mongod使用的映射内存文件到内存的方法可以确保操作系统从来不会把MongoDB数据放进虚拟内存。

  RAID

  绝大多数MongoDB应该使用RAID-10磁盘系统。

  RAID-5和RAID-6典型情况下不能为MongoDB提供足够好的性能。

  MongoDB应该避免使用RAID-0。RAID-0提供了足够好的写性能,但它只能提供有限的可用性,并且可能导致读操作性能低下,特别是在Amazon EBS卷上。

  远程文件系统

  MongoDB不推荐使用网络文件系统(NFS),因为一些版本的NFS性能低下。

  当数据文件和日志文件同时位于NFS上时就会发生性能问题。如果你把日志放到本地或iscsi上则可能得到更好的性能体验。如果必须使用NFS,添加以下NFS选项到你的/etc/fstab文件:bg,nolock及noatime。

  把不同的组件放到不同的存储设备

  为了提高性能,考虑把你的数据库的数据,数据日志和应用日志按照你的应用程序的读写模式放到不同的存储设备上。

  注意:这会影响你创建数据快照的能力。因为文件会在不同的设备和卷上。

  架构

  Write Concern

  Write Concern描述了MongoDB报告成功写操作时是如何确保它是成功的。Write Concern的强度决定了保证成功的等级。当插入,更新或删除有一个等级比较弱的Write Concern的时候,写操作能够迅速返回。在一些失败的场景中,具备较弹的Write Concern的写操作可能不能被持久化。具有更强的Write Concern时,客户端会等到MongoDB确认了这个写操作成功为止。

  MongoDB提供了不同等级的Write Concern来满足不同应用的不同需求。客户端可以通过调整Write Concern来确定最重要的操作始终成功持久化到整个MongoDB集群。对于其他不那么重要的操作,客户端调整Write Concern以保证更好的性能,而不是等待整个集群完成持久化。

  查看Write Concern章节以获取更多关于如何选择合适你的MongoDB集群的Write Concern等级的信息。

  Replica Set

  查看Replica Set部署架构章节以了解Replica Set集群的整体架构和需要考虑的问题。

  分片集群

  查看生产环境集群架构章节以了解生产环境分片集群的推荐架构情况。

2
相关文章