2013-04-16 3 views
12

Мы запускаем сервер Node Socket.io с Express 3. Сервер контролируется с использованием Forever. Сервис работает хорошо, но процессор растет в течение дня, пока он не достигнет 90% +, а затем внезапно опустится до ~ 20%, как показано на графиках ниже. Я считаю, что падение вызвано перезагрузкой приложения Forever.Как отлаживать проблемы с процессором Node + Socket.io

CPU Behaviour

То, что я хотел бы знать;

  • Каковы типичные факторы, которые могут привести к тому, что приложение Node.js будет вести себя так?
  • Какие инструменты/методы доступны для отладки утечек памяти/cpu hogging в приложениях узлов?

Я думаю, что это может быть связано с тем, что Socket.io не очищает ресурсы после отключения пользователей, хотя документы говорят, что Socket.io будет управлять этим автоматически.

Любая помощь будет принята с благодарностью, эта проблема затрудняет управление нашим сервером. Я опубликовал этот вопрос на Serverfault неделю назад, но не получил ответа, поэтому я думаю, что здесь может быть лучше.

Обновление: После дополнительных исследований выяснилось, что ЦП напрямую не коррелирует с количеством подключений. Наша критическая масса, кажется, около ~ 1500 одновременных соединений распались, как так:

  • XHR-опрос: 767
  • WebSocket: 692
  • jsonppolling: 80

Иногда мы могли бы быть 100% процессор с только 500 подключениями, в то время как 1500 соединений. Я знаю, что скорость отправки сообщений имеет большое влияние, однако ставка довольно последовательна.

+0

+1 Я тоже хотел знать, что слишком – Samson

+0

@steveEdson, вы нашли какое-либо исправление для этого или виновника? – Faizan

+0

Это было три года назад, поэтому я не могу вспомнить все детали. Сначала мы отключились от Socket.io и вместо этого использовали Faye.js. Мы просмотрели весь код и убедились, что утечек памяти нет.Мы гарантировали, что все пакеты обновлены как в приложении, так и в системе. После различных изменений CPU выровнялся и был намного более стабильным. Надеюсь, это поможет. – SteveEdson

ответ

2

Я не то, что опытный, но основные причины вашей задержки процессора может быть:

  1. Код время выполнения: Если у вас есть несколько петель смотреть на давая им меньше данных Cranch/экстракта.
  2. Параллельное подключение: У меня также была проблема с этим, человек может открыть 3-4 вкладки/окна браузера, чтобы попытаться сделать одно одновременное соединение для каждого пользователя NB. вы можете использовать сеансы

Я попытаюсь отредактировать этот ответ, если у меня что-нибудь придет на ум, и вы можете увидеть приведенную ниже ссылку для стресс-тестов сервера на Nodejs.

Link is here

Надеется, что это помогает.

+0

Ожидание вашего редактирования, у меня есть эта проблема с моим узловым сервером. – Faizan

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