很多Nodejs的教程都是和mongodb相结合,对于初学者,很容易就跨入mongo的大门。坑爹的是,当你已经入门后,才发现mongodb在32位系统下有所有进程2G数据大小限制。根据mongo官方博客的评论,可能会会出现如下问题:
由于mongodb使用内存映射文件,数据大小的具体限制因系统而异。理论上最大限制为2.5G。2G属于安全限制:
如果你在32位系统下,mongodb还要包含系统日志,那存储数据只能存储到一半的数量,这也是不推荐32位系统下做mongodb系统日志的原因。
数据索引、命名空间和内部数据如操作日志的数量也会受到2G的限制。
通过系统进程跟踪可以追踪2G限制的发生,例如PS或HTOP命令。
当数据大小超过极限,可以肯定的是无法再插入新的数据,数据库也无法接受新的连接。mongodb服务器应该会停止工作,返回致命错误。
新建一个collection名为’contact’,随便插点数据{domain:’zhaiduo.com’},数据文件contact.0和contact.ns分别是16,384KB,一共32M。也就是说2G文件可以容纳64个collections。这还不包括其它索引等数据。16M文件如果每条数据512字节,也就三万多条数据。
看来mongdb还是只适合64位的系统,32位的使用起来让人提心吊胆。不过,我会在中小型网站上试用一下,看看32位系统下,到底mongodb何德何能。