Запрос MongoDB для большого набора данных очень медленный - PullRequest
0 голосов
/ 05 мая 2018

я использую mongoose для подключения к одному экземпляру mongodb из приложения node.js. и приложение, и сервер mongo находятся в одной виртуальной сети, поэтому время отклика не является проблемой.

проблема начинается при попытке получить результаты индексированного запроса, это занимает почти вечность (до 20 минут). когда запрос наконец возвращается, он может содержать от 25 до 250 тысяч документов.

вот статистика моей коллекции:

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;
    });
}

Любые выводы будут с благодарностью, спасибо за чтение!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...