平台
在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 Distribution | Filesystem | Kernel Version |
---|---|---|
CentOS 5.5 | ext4, xfs | 2.6.18-194.el5 |
CentOS 5.6 | ext4, xfs | 2.6.18-238.el5 |
CentOS 5.8 | ext4, xfs | 2.6.18-308.8.2.el5 |
CentOS 6.1 | ext4, xfs | 2.6.32-131.0.15.el6.x86_64 |
RHEL 5.6 | ext4 | 2.6.18-238 |
RHEL 6.0 | xfs | 2.6.32-71 |
Ubuntu 10.04.4 LTS | ext4, xfs | 2.6.32-38-server |
Amazon Linux AMI release 2012.03 | ext4 | 3.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需要考虑的问题。