对大型数据集进行MongoDB查询的速度非常慢

时间:2018-05-05 08:11:37

标签: node.js linux mongodb performance

我正在使用mongoose从node.js应用程序连接到mongodb的单个实例。应用程序和mongo服务器都在同一个vnet上,因此响应时间不是问题。

问题在尝试获取索引查询的结果时开始,几乎永远(最多20分钟)。当查询最终返回时,它可能包含介于25k到250k之间的文档。

这是我的收藏统计数据:

doc count: 24354776
size: 59.9 GiB (64,308,640,625)
storage size: 18.9 GiB (20,301,250,560)
avg object size: 2.6 KiB (2,640)
indexes: 4
index size: 768.0 MiB (805,330,944)

mongo服务器本身在Linux机器上运行,具有以下内容:

CPUS: 4
RAM: 16gb
Disc type: SSD
Disc size: 1536gb
IOPS limit: 7500
Throughput limit: (MB/s) 250

在调整服务器以尽可能高效地运行mongodb方面,我有以下内容:

store engine: wiredtiger
transparent_hugepage/enabled: [never]
transparent_hugepage/defrag: [never]

最后这里是查询本身的样子:(域字段被索引)

async getEntriesFromDB(collection, domain) {
    return await collection.find({ domain }, { _id: 0, __v: 0 }, async function (err, res) { 
        if (err) {
            return await err;
        }
        return await res;
    });
}

任何线索都将不胜感激, 谢谢你的阅读!

0 个答案:

没有答案