что они означают, если для задачи с интенсивным использованием ЦП в nodejs? в соотнесении с базой данных, выполняющей задачу с интенсивным использованием ЦП

#node.js #database #amazon-elastic-beanstalk #amazon-rds

#node.js #База данных #amazon-elastic-beanstalk #amazon-rds

Вопрос:

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

моя база данных — задача с интенсивным использованием процессора.

Ответ №1:

что они означают, если для задачи с интенсивным использованием ЦП в nodejs? я

Nodejs использует только один процессор для запуска вашего Javascript. Другие вещи, которые выполняются в других процессах (например, в вашей базе данных), имеют свою собственную стратегию использования ЦП и напрямую не влияют на использование ЦП в node.js .

Итак, если ваш Javascript сам выполняет ресурсоемкие задачи (в вашем собственном Javascript), например, некоторые действительно сложные вычисления, то node.js увязнет и не сможет оперативно обрабатывать входящие запросы. Для сервера это обычно считается плохой ситуацией, потому что сервер не будет реагировать во время длительных вычислений.

Выполнение асинхронных вызовов к чему-либо, что выполняется в другом процессе (например, в базе данных), практически не использует процессор в node.js . В node.js процесс выполняет асинхронный вызов, который запускает внешнюю операцию, а затем этот асинхронный вызов (почти сразу) возвращает управление обратно в node.js и node.js возвращается обратно в цикл событий и немедленно готов к обработке других входящих событий. Затем, когда асинхронная операция завершится, новое событие будет вставлено в цикл событий, который вызовет обратный вызов асинхронного завершения и ваш node.js затем приложение может обработать результат.

Если моя рабочая нагрузка в основном выполняется в базе данных, ожидает ли nodejs завершения базы данных, считается ли это задачей с интенсивным использованием ЦП для nodejs?

Нет. Пока база данных запущена в другом процессе, это не будет считаться задачей с интенсивным использованием ЦП для node.js и не будет блокировать цикл событий в node.js таким же образом, как и при длительном вычислении Javascript.

Это, безусловно, будет использовать общие циклы процессора на сервере, но мы предполагаем, что доступно более одного ядра процессора (поэтому база данных не загружает все возможные процессоры) и что даже если мы будем держать все процессоры занятыми, ОС все равно будет выделять время между потоками, поэтому node.js все еще может работать нормально.

P.S. Nodejs всегда мог использовать дочерние процессы и теперь имеет рабочие потоки, поэтому вы можете выполнять задачи с интенсивным использованием ЦП в любом из них, а также не блокировать основной цикл событий.