技术开发 频道

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

  平台

  在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内核版本:

Linux DistributionFilesystemKernel Version
CentOS 5.5ext4, xfs2.6.18-194.el5
CentOS 5.6ext4, xfs2.6.18-238.el5
CentOS 5.8ext4, xfs2.6.18-308.8.2.el5
CentOS 6.1ext4, xfs2.6.32-131.0.15.el6.x86_64
RHEL 5.6ext42.6.18-238
RHEL 6.0xfs2.6.32-71
Ubuntu 10.04.4 LTSext4, xfs2.6.32-38-server
Amazon Linux AMI release 2012.03ext43.2.12-3.2.4.amzn1.x86_64

  重要: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需要考虑的问题。

2
相关文章