Мы запускаем сервер Node Socket.io с Express 3. Сервер контролируется с использованием Forever. Сервис работает хорошо, но процессор растет в течение дня, пока он не достигнет 90% +, а затем внезапно опустится до ~ 20%, как показано на графиках ниже. Я считаю, что падение вызвано перезагрузкой приложения Forever.Как отлаживать проблемы с процессором Node + Socket.io
То, что я хотел бы знать;
- Каковы типичные факторы, которые могут привести к тому, что приложение Node.js будет вести себя так?
- Какие инструменты/методы доступны для отладки утечек памяти/cpu hogging в приложениях узлов?
Я думаю, что это может быть связано с тем, что Socket.io не очищает ресурсы после отключения пользователей, хотя документы говорят, что Socket.io будет управлять этим автоматически.
Любая помощь будет принята с благодарностью, эта проблема затрудняет управление нашим сервером. Я опубликовал этот вопрос на Serverfault неделю назад, но не получил ответа, поэтому я думаю, что здесь может быть лучше.
Обновление: После дополнительных исследований выяснилось, что ЦП напрямую не коррелирует с количеством подключений. Наша критическая масса, кажется, около ~ 1500 одновременных соединений распались, как так:
- XHR-опрос: 767
- WebSocket: 692
- jsonppolling: 80
Иногда мы могли бы быть 100% процессор с только 500 подключениями, в то время как 1500 соединений. Я знаю, что скорость отправки сообщений имеет большое влияние, однако ставка довольно последовательна.
+1 Я тоже хотел знать, что слишком – Samson
@steveEdson, вы нашли какое-либо исправление для этого или виновника? – Faizan
Это было три года назад, поэтому я не могу вспомнить все детали. Сначала мы отключились от Socket.io и вместо этого использовали Faye.js. Мы просмотрели весь код и убедились, что утечек памяти нет.Мы гарантировали, что все пакеты обновлены как в приложении, так и в системе. После различных изменений CPU выровнялся и был намного более стабильным. Надеюсь, это поможет. – SteveEdson