Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум на Исходниках.RU > WWW Masters. Прочее > Бурильня в Node.js


Автор: old_lamer 12.04.17, 11:18
Доброго времени, товарищи. Нужна ваша помощь )

Есть приложение на Node.js
Используется express для маршрутизации запросов и mongodb для БД.

Требуется найти узкие места в производительности. Поставил несколько экспериментов, но затрудняюсь интерпритировать результат.

Эксперимент №1 - сервер отвечает на запрос не думая (сразу возвращает ответ и делает сокету .end())
Клиент посылает 1000 запросов.
Результат: Клиент в течении 2-3 секунд получает все ответы. Ответы поступают почти в то же время как их отдаёт сервер.

Эксперимент №2 - сервер получая запрос думает, он производит поиск, вставляет и апдейтит данные в БД, потом возвращает ответ.
Клиент посылает 1000 запросов.
Результат: Сервер в течении ~5-10 секунд отдаёт последний ответ. Клиент продолжает получать ответы ещё около минуты.

При втором эксперименте и загрузка процессора согласуется с результатом, первые несколько секунд процесс ноды нагружен, затем назгрузки нет. Тем не менее, если я убью процесс с нодой, клиент тоже отвалится и не получит ответы.

т.е. Если сервер обращался к БД, то потом уже готовые ответы выдаётся сервером около минуты. Если к БД не обращаться, а сразу ваыдавать ответы, то они быстро доходят до клиента.

Автор: old_lamer 12.04.17, 12:20
Бурильня вычислена методом последовательной ампутации частей кода.
Бурильня в
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    var MySQLStore = require('express-mysql-session')(session);

Powered by Invision Power Board (https://www.invisionboard.com)
© Invision Power Services (https://www.invisionpower.com)