Как я могу профилировать свое приложение Node, чтобы увидеть, где я использую память и ресурсы ЦП?

Мой веб-сайт CompassionPit.com работает на Node.js. Я выпустил исходный код; он размещен на GitHub. Само приложение работает на Linode с 768 МБ ОЗУ (я недавно обновил сервер; он был на 512 МБ).

В последнее время я получаю уведомления об использовании ЦП от Linode: мы все чаще используем 90%+. Я позвонил в Linode, чтобы узнать, что я могу сделать с расширением доступа к ресурсам процессора, но, по-видимому, пока я в порядке, поскольку, если мы доведем до 100%, мы можем перекинуться на следующие 3 ядра (Linode — это 4-процессорный Xen). экземпляры).

Как я могу профилировать свое приложение Node, чтобы увидеть, где я использую память и ресурсы ЦП? Я предполагаю, что скоро мне нужно будет реструктурировать приложение, чтобы оно запускалось на нескольких серверах, но я интуитивно считают, что правильное профилирование приведет к более разумным архитектурным решениям. Пожалуйста, поправьте меня, если я ошибаюсь.


person Zack Burt    schedule 05.09.2011    source источник
comment
CompassionPit.com, похоже, больше не существует для тех, кто зайдет на этот пост несколько лет спустя.   -  person jcollum    schedule 03.04.2013


Ответы (3)


Я добился разумного успеха, используя https://github.com/dannycoates/node-spector для профилирование. В нижней части файла README есть руководство по установке.

В более поздних версиях Node.js профилирующая часть инспектора узлов больше не работает. У меня был разумный успех с --prof (http://code.google.com/p/v8/wiki/V8Profiler) и https://github.com/c4milo/node-webkit-agent, как указано в ответе ниже.

person Glenjamin    schedule 05.09.2011
comment
Я хотел бы присоединиться к этому каналу #Node.js на Freenode, люди также предложили dtrace (кредит: H4ns) и v8-profiler (Glenjamin). - person Zack Burt; 05.09.2011

Инспектор узлов не может профилировать узел после версии 0.6.x

Следующий плагин обновлен для работы с новой версией v8 (узел 0.7.x+). Это единственный, кроме nodetime.com, который все еще работает. Он использует реальный отладчик webkit:

https://github.com/c4milo/node-webkit-agent

Там тоже очень четкие инструкции.

person Scott    schedule 12.10.2012
comment
Это уже не так. Тем временем инспектор узлов был обновлен. - person chicken; 05.03.2014
comment
@LeoKoppelkamm Где вы видите, что Node Inspector поддерживает профилирование? В README по-прежнему указано, что профилировщик еще не реализован. - person John; 25.03.2014
comment
Я имел в виду комментарий 0.6.x. Инспектор узлов некоторое время был полностью сломан, но в то же время это было исправлено. Я собираюсь отредактировать ответ, чтобы прояснить это. - person chicken; 27.03.2014