2017-01-09 2 views
1

У меня возникли проблемы с ограничением производительности использования узла с помощью динамика Heroku Hobby, который содержит всего лишь один веб-рабочий.node.js on heroku hobby dyno, ограничения

Мой сервер heroku используется для ответа на пост-запросы и инициирования связи между сервером и сервером. Мы будем называть это «процессом».

Node.js является javascript и имеет только один цикл событий, означает ли это, что если мой сервер heroku еще не выполнен с процессом, он не сможет инициировать другой?

На стороне клиента пользователь отправляет один запрос на отправку, который запускает «процесс».

Если процесс не завершен, может ли другой пользователь отправить другой запрос на почту и ожидать, что что-то произойдет? Будет ли мой сервер работать до тех пор, пока не будет выполнен первый процесс?

В моем предварительном тестировании почти кажется, что он не имеет никаких проблем с двумя пользователями отправки почти одновременных запросов, так что я не уверен, что ограничение я бы ударил

+0

Вы думаете о приложении больше как вызывается Lambda функции, это не то, как dyno работает в Heroku. Он может обрабатывать одновременные запросы, а также Heroku имеет очередь на месте. Вы можете запускать тесты, чтобы узнать, сколько запросов ваш дино может обрабатывать до удушения. – cinnaroll45

ответ

1

Это не проблема, согласно документации Heroku, вы «Я могу обрабатывать несколько запросов без проблем с Node.js.

динамометрические стенды и просит

Один Dyno может обслуживать тысячи запросов в секунду, но производительность сильно зависит от языка и рамок вы используете.

Однопоточный неконкурентный веб-фреймворк (например, Rails 3 в его конфигурации ) может обрабатывать один запрос за раз. Для приложения , которое занимает в среднем 100 мс для обработки каждого запроса, это переводит примерно 10 запросам в секунду на дино, что не является оптимальным.

Одиночные резьбовые соединения не рекомендуется для производства приложений из-за их неэффективной обработки одновременных запросов . Выбирайте параллельный бэкэнд при разработке и запуске производственного обслуживания.

Многопоточные среды, такие как Java, Unicorn, EventMachine и Node.js могут обрабатывать множество одновременных запросов. Загрузка тестирование вашего приложения - единственный реальный способ определения запроса пропускной способности.

Дальнейшее чтение:

На динамометрических стендах: https://devcenter.heroku.com/articles/dynos#dyno-types

На рабочих мест и организации очередей: https://devcenter.heroku.com/articles/background-jobs-queueing

Async рабочих: https://devcenter.heroku.com/articles/asynchronous-web-worker-model-using-rabbitmq-in-node

+0

что-нибудь прохладное там для нагрузочного тестирования? – CQM

+0

Я лично использую [Apache Benchmark] (http://httpd.apache.org/docs/2.2/programs/ab.html)). Вы можете искать другие варианты, но обязательно проверяйте время от времени на Ироку.Такие вещи, как надстройки и другие мелкие детали, могут неожиданно повлиять на вашу производительность. – cinnaroll45

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