目前我正在使用mongodb进行大数据项目。我已经将mongodb安装到带有32GB RAM的Centos 7服务器并连接到12TB NFS。到目前为止,这是我的数据库统计信息:
web-analyzer 43.933 GB
web-crawler 109.900 GB
web-crawler2 339.788 GB
问题是,每当我在may集合上运行craeteIndex()时,我的mongodb总是最终没有响应(我无法执行db.collection.count()或者显示dbs / collections'命令)所以我使用CTRL + C终止作业。之后我无法使用' kill pid'来关闭我的mongodb。或者' mongod --shutdown'命令所以我必须重新启动我的服务器。有谁知道这个问题的原因以及如何解决这个问题?
这是我的顶级' mongod服务的命令输出:
运行查询前:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2896 mongod 20 0 0.965t 99220 70964 S 0.3 0.3 0:00.33 mongod
运行createIndex() 后
谢谢:)PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2896 mongod 20 0 0.965t 2.465g 2.411g S 2.7 7.9 0:26.03 mongod
答案 0 :(得分:2)
默认情况下,构建索引是一种阻塞操作,它会锁定数据库直到完成。如果您的馆藏中已有大量数据,则可能需要很长时间。但您可以使用background:true
选项在后台构建索引。
db.collection.createIndex({ keyfield: 1, otherkeyfield: 1 }, { background: true });
整体上需要更长的时间,但数据库会在你做的时候继续响应。
有关创建索引的更多信息,请please refer to the documentation。