Высокая загрузка процессора для Meteor.js

#javascript #node.js #performance #meteor #forever

#javascript #node.js #Производительность #метеор #навсегда

Вопрос:

введите описание изображения здесь

A meteor.js приложение 0.82 запущено на сервере Ubuntu 14.04 с 2 ГБ памяти и 2 ядрами процессора. Он был развернут с помощью mup . Однако загрузка процессора очень высока, htop сообщает 2.72 о средней загрузке.

Вопрос: Как мне узнать, какая часть приложения вызывает такую высокую загрузку процессора? Я использовал Kadira, но он не показывает ничего, что значительно увеличивает нагрузку на процессор afaik.

Использует ли Meteor только одно ядро?

введите описание изображения здесь
введите описание изображения здесь
введите описание изображения здесь
введите описание изображения здесь

Комментарии:

1. вы запускаете свое приложение из пакета или с meteor run ?

2. @imslavko Я запускаю пакет. Пакет был создан и загружен с помощью mup .

3. чтобы ответить на один из ваших вопросов: да, meteor использует только одно ядро, потому что это все node.js

4. Почему существует 6 процессов mongo?

5. @AndrewMao Я не уверен, почему их 6. Я перезапустил mongod , и это все еще 6. Я использую mongodb версии v2.6.3

Ответ №1:

У меня была похожая проблема раньше с Meteor 0.8.2-0.8.3. Вот что я сделал, чтобы уменьшить загрузку процессора, надеюсь, вы можете найти это полезным.

  • дважды проверьте свои функции, убедитесь, что все функции работают правильно return и правильно улавливают ошибки
  • попробуйте использовать набор реплик и oplog mongo преобразует standalone в набор реплик
  • напишите сценарии для автоматического завершения и повторного запуска процесса узла, если он превышает 100% загрузки процессора
  • используйте возможности многоядерности, запустив 2 процесса (редактирование вы уже сделали) и настройте баланс нагрузки и обратный прокси
  • обязательно просмотрите свою публикацию и подписку и ограничьте, какие данные следует отправлять клиенту (просто избегайте чего-то вроде Collection.find(); )

Лично я рекомендую Phusion Passenger, он упрощает развертывание приложений Meteor, и я использовал его для нескольких проектов без каких-либо серьезных проблем.

Еще одна вещь, избегайте запуска процессов от root (или привилегированного пользователя), вы должны запускать свои приложения от другого пользователя, например от www-data. Это по очевидной причине безопасности.

P.S. и несколько процессов mongo, отображаемых в htop, являются потоками в главном процессе, вы можете просмотреть его в древовидном режиме, нажав F5 .