На главную
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
  
> Бурильня в Node.js, Тормозят сокеты
    Доброго времени, товарищи. Нужна ваша помощь )

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

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

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

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

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

    т.е. Если сервер обращался к БД, то потом уже готовые ответы выдаётся сервером около минуты. Если к БД не обращаться, а сразу ваыдавать ответы, то они быстро доходят до клиента.
    Ъы
      Бурильня вычислена методом последовательной ампутации частей кода.
      Бурильня в
      ExpandedWrap disabled
        var MySQLStore = require('express-mysql-session')(session);
      Ъы
      0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
      0 пользователей:


      Рейтинг@Mail.ru
      [ Script Execution time: 0,0731 ]   [ 17 queries used ]   [ Generated: 10.12.19, 20:55 GMT ]