2.3 Использование всех процессорных ядер в многоядерной системе
V8 - однопоточный движок JavaScript. Для браузера Chrome этого достаточно, однако означает, что Node-сервер, работающий на только что купленном 16-ядерном сервере, задействует всего одно ядро, а 15 остальных простаивают.
Однопоточный процесс использует только одно процессорное ядро. Это факт, от которого никуда не уйти. Чтобы задействовать в одном процессе несколько ядер, необходима многопоточная программа. Однако принятая в Node парадигма проектирования без потоков, хотя и позволяет упростить модель программирования, одновременно означает, что Node не использует несколько ядер.
Есть несколько проектов, посвященных разработке многопроцессных конфигураций Node для повышения надежности и задействования всех имеющихся процессорных ядер.
Основная идея состоит в том, чтобы запустить несколько процессов Node и распределять между ними поступающие запросы. Имея кластер из однопоточных процессов, вы сможете использовать все ядра.
Один из таких проектов называется Cluster (https://github.com/LearnBoost/cluster), авторы описывают его как «расширяемый менеджер многоядерных серверов для Node.js». Он запускает конфигурируемый набор дочерних процессов, перезапускает их после сбоя и располагает богатыми средствами протоколирования, управления из командной строки и сбора статистики. Более ранний проект Spark закрылся, уступив место Cluster.
- Введение
- 1. Что такое NODE?
- 1.1 Что позволяет делать Node?
- 1.2 Почему имеет смысл использовать Node?
- Архитектура: потоки или асинхронный ввод/вывод с управлением по событиям.
- 1.3 Производительность и использование процессора
- 1.4 Использование серверов, экономия затрат и экологичный Интернет
- 2. Характеристики NODE
- 2.1 Системные требования
- 2.2 Запуск Node-серверов на этапе инициализации системы
- 2.3 Использование всех процессорных ядер в многоядерной системе
- 3. Модули Node
- 3.1 Как Node ищет модули, затребованные в require(module)?
- Менеджер пакетов для Node (npm)
- 4. Хранение и выборка данных
- 4.1 Движки сохранения данных для Node
- 4.2 SQLite3 - облегченная встраиваемая база данных на основе SQL
- 4.3 Mongoose - интерфейс между Node и MongoDB
- 5. Практический пример на основе продолжительных вычислений (числа Фибоначчи)
- Глава 2 Описание языков для разработки web-приложений
- Выбор среды разработки, языка программирования и инструментальных средств разработки
- 16. Языки и средства создания Web-приложений
- JavaScript-приложения
- JavaScript
- Разработка Web - приложений с использованием uml
- JavaScript и Вы
- Средства создания Web –приложений.