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

2014-11-24 17:34:10 · 作者: · 浏览: 1
如何选择合适你的MongoDB集群的Write Concern等级的信息。


  Replica Set


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


  分片集群


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



  平台


  在Linux上运行MongoDB


  重要:以下讨论只适用于Linux,因此不影响mongod在其他类Unix系统或Windows系统的部署。


  内核和文件系统


  当在生产环境中让MongoDB运行于Linux上时,推荐使用Linux内核版本2.6.36或更新版本。


  MongoDB会在使用前预先分配数据文件,通常会是一个比较大的文件。因此,你应该使用Ext4或XFS文件系统:


  总体上,如果你使用Ext4文件系统,使用至少2.6.23以上的Linux内核。


  总体上,如果你使用XFS文件系统,使用至少2.6.25以上的Linux内核。


  一些Linux发行版在运行ext4和/或XFS时要求不同的Linux内核版本:


  重要:MongoDB要求文件系统对目录支持fsync()。所以例如HGFS和Virtual Box的共享目录不支持这个操作。


  推荐配置


  ●在包含数据文件的卷关闭atime配置。


  ●按照UNIX ulimit设置的推荐,设置描述符限制,-n及其他用户进程限制(ulimit),-u到多于20000。较低的ulimit配置在大压力情况下会影响MongoDB,并且可能产生错误及导致连接到MongoDB失败和服务不可用。


  ●不要使用hugepages虚拟内存页,因为MongoDB在正常虚拟内存页中表现更好。


  ●在BIOS中禁用NUMA。如果做不到,请参考MongoDB和NUMA硬件章节。


  ●确保存放数据文件的块设备的readahead配置合理。对随机访问模式,设置较低的readahead值。readahead 32(或16kb)通常工作良好。


  ●使用网络时间协议(NTP)保证服务器间的时间同步。这对于分片集群来说尤其重要。


  虚拟环境中的MongoDB


  本章节描述了在常用虚拟环境中运行MongoDB需要考虑的问题。



  EC2


  MongoDB与EC2环境兼容,不需要指定特别的环境配置。


  作为选择之一,你也可以选择一组绑定了MongoDB和提供了Amazon Provisioned IOPS卷的Amazon机器映像(AMI)。Provisioned IOPS能够极大地增进MongoDB的性能和易用性。查看这篇博客以了解更多信息。


  VMWare


  MongoDB兼容VMWare。如果用户陷入VMWare的内存过量使用特性问题,推荐禁用掉这个特性。


  克隆一个正在运行MongoDB的虚拟机是可能的。你可以使用这个特性来配置一个新的虚拟主机,并把它加入到Replica Set中。如果你克隆了一台启用日志的VM,克隆出来的快照将是可用的。如果没有启用日志,需要先信用mongod,克隆VM,最后重新启动mongod。


  OpenVZ


  有些用户在运行老版本的OpenVZ上运行MongoDB上遇到问题是因为它处理虚拟内存的方式,跟VMWare类似原因。


  这个问题看起来在最近的OpenVZ版本中已经解决了。


  性能监控


  iostat


  在Linux上,可以使用iostat命令检查磁盘IO是否是你的数据库的瓶颈。在使用iostat时指定一个更新时间秒数,以避免得到的是自机器启动以来的平均IO统计。


  例如,以下命令将会以每份报告中显示扩展统计,带有MB/s为单位的流量统计,每秒统计一次:


  iostat的关键字段:


  %util: 这是快速检查时最有用的字段。它指示设备/驱动器占用了处理时间的多少百分比。


  avgrq-sz: 平均请求大小。越小的值代表越随机的IO操作。


  bwm-ng


  bwm-ng是用于监控网络流量的命令行工具。如果你怀疑网络遇到瓶颈,则可以使用bwm-ng来启动诊断流程。


  备份


  为了备份MongoDB数据库,请检查MongoDB备份方法。


相关阅读