bson.deserializeObject загружает слишком много ЦП для, казалось бы, простого запроса - PullRequest
0 голосов
/ 05 июня 2018

У меня есть коллекция mongoDB ~ 400 документов.И у меня есть метод REST, который на данный момент просто возвращает результат запроса .find ({}) для этой коллекции (я использую mongoose, кстати).Когда я попытался сравнить этот метод с ~ 40 запросами в секунду, я обнаружил, что время отклика ужасно (~ 10 с), и после того, как я профилировал приложение, флеймграф выглядел следующим образом

enter image description here

Производительность становится допустимой, когда запрос обрабатывает примерно 20-30 объектов, но если он превышает 100, приложение просто застревает при десериализации результатов.Это нормально?Могу ли я что-нибудь с этим сделать?

Заранее спасибо.

1 Ответ

0 голосов
/ 07 января 2019

Использование метода lean в mongoose может помочь вам.

Метод lean указывает mongoose не преобразовывать объекты из db в объекты схемы mongoose, а простые объекты JavaScript, которые, в свою очередь, увеличивают скорость десериализации.

Пример

Students.find({name: 'Josh'}).lean().exec((err, docs) => {
     ...
});

Смотрите такжеhttp://www.tothenew.com/blog/high-performance-find-query-using-lean-in-mongoose-2/
Использование постного в мангусте с обратным вызовом

...