1

У меня есть 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) с узлом и Монго

, локальные
+1

Так что вопрос длится долго? Время здесь - это HTML-запрос для обработки (получение данных из mongo + другие вещи, которые сервер узлов делает), и возврат, который включает в себя множество других компонентов, а не только для запроса mongo, который вас интересует. –

+0

@AlokSwain, запрос супер быстро. Похоже, есть еще одна проблема. Может ли быть время для преобразования двоичного потока в строку JSON? – dzjosjusuns

+0

, когда я это делаю 'Notes.find(). Stream(). On (' close ', function() {res.send (' END ');});' в два раза быстрее, но все же медленно. – dzjosjusuns

ответ

0

100 документов для запроса возвращаются в 20мсе и 10 результатов возвращаются в 2мсе, то есть некоторая работа, выполняемый узел, ведьма в общей сложности для 100 строк дает 50 мс за запрос, который дает мне 20 запросов в секунду. Неплохо, но я думаю, что мне приходится иметь дело с этим на данный момент.

Смежные вопросы