У меня есть MongoDB с небольшой коллекцией из 100 документов. Я хочу, чтобы вернуть все документы, ~ 50KB одновременно (с использованием узлов и Мангуст)Плохая производительность (Node.js, обслуживающий данные от MongoDB)
Items.find().stream().pipe(JSONStream.stringify(false)).pipe(res);
Использование ApacheBench с этой командой
ab -r -n 100 -c 10 http://127.0.0.1:8080/api/stress
Я получил этот результат
Document Path: /api/stress
Document Length: 52866 bytes
Concurrency Level: 10
Time taken for tests: 5.738 seconds
Complete requests: 100
Failed requests: 0
Total transferred: 5308266 bytes
HTML transferred: 5286600 bytes
Requests per second: 17.43 [#/sec] (mean)
Time per request: 573.783 [ms] (mean)
Time per request: 57.378 [ms] (mean, across all concurrent requests)
Transfer rate: 903.45 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.3 0 1
Processing: 312 558 95.5 562 853
Waiting: 20 305 118.9 303 527
Total: 312 558 95.6 562 854
Percentage of the requests served within a certain time (ms)
50% 562
66% 582
75% 605
80% 626
90% 670
95% 715
98% 822
99% 854
100% 854 (longest request)
Document Path: /api/stress
Document Length: 52866 bytes
Concurrency Level: 10
Time taken for tests: 5.738 seconds
Complete requests: 100
Failed requests: 0
Total transferred: 5308266 bytes
HTML transferred: 5286600 bytes
Requests per second: 17.43 [#/sec] (mean)
Time per request: 573.783 [ms] (mean)
Time per request: 57.378 [ms] (mean, across all concurrent requests)
Transfer rate: 903.45 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.3 0 1
Processing: 312 558 95.5 562 853
Waiting: 20 305 118.9 303 527
Total: 312 558 95.6 562 854
Percentage of the requests served within a certain time (ms)
50% 562
66% 582
75% 605
80% 626
90% 670
95% 715
98% 822
99% 854
100% 854 (longest request)
запросов в секунду : 17,43 (что кажется слишком мало.)
При возврате 10 записей
Notes.find().limit(10).stream().pipe(JSONStream.stringify(false)).pipe(res);
запросов в секунду: (. Ведьмой кажется хорошо) 146,53
Так что я интересно, я интерпретации данных неправильно или я делаю что-то неправильно ?, потому что я ожидал немного лучшей производительности от возврата немного большего объема данных от MongoDB.
Я использую локальную машину для Windows (i7/8GB) с узлом и Монго
, локальные
Так что вопрос длится долго? Время здесь - это HTML-запрос для обработки (получение данных из mongo + другие вещи, которые сервер узлов делает), и возврат, который включает в себя множество других компонентов, а не только для запроса mongo, который вас интересует. –
@AlokSwain, запрос супер быстро. Похоже, есть еще одна проблема. Может ли быть время для преобразования двоичного потока в строку JSON? – dzjosjusuns
, когда я это делаю 'Notes.find(). Stream(). On (' close ', function() {res.send (' END ');});' в два раза быстрее, но все же медленно. – dzjosjusuns