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

MongoDB Not Responding on db.collection.createIndex()

目前我正在为我的大数据项目使用 mongodb。我已经将 mongodb 安装到具有 32GB RAM 并连接到 12TB NFS 的 Centos 7 服务器中。到目前为止,这是我的数据库统计信息:

web-analyzer   43.933 GB
web-crawler   109.900 GB
web-crawler2  339.788 GB

问题是,每当我 运行 may 集合上的 craeteIndex() 时,我的 mongodb 总是以无响应结束(我无法执行 db.collection.count() 或 'show dbs / collections' 命令)所以我使用 CTRL + C 终止作业。之后我无法使用 'kill pid' 或 'mongod --shutdown' 命令关闭我的 mongodb 所以我必须重新启动我的服务器。任何人都知道这个问题的原因以及如何解决这个问题?

这是我的 'top' 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

在 运行ning 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

谢谢:)

默认情况下,建立索引是一个阻塞操作,它会锁定数据库直到完成。当您的集合中已经有大量数据时,这可能需要很长时间。但是您可以使用 background:true 选项在后台建立索引。

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

总体上会花费更长的时间,但数据库会在您这样做时保持响应。

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