MongoDB对db.collection.createIndex()没有响应

时间:2015-03-18 04:52:12

标签: mongodb centos7

目前我正在使用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

谢谢:)

1 个答案:

答案 0 :(得分:2)

默认情况下,构建索引是一种阻塞操作,它会锁定数据库直到完成。如果您的馆藏中已有大量数据,则可能需要很长时间。但您可以使用background:true选项在后台构建索引。

db.collection.createIndex({ keyfield: 1, otherkeyfield: 1 }, { background: true });

整体上需要更长的时间,但数据库会在你做的时候继续响应。

有关创建索引的更多信息,请please refer to the documentation