Как можно максимально ускорить ноду, помимо кластера?

Сравниваем разные языки (для себя), интересно, можно ли как-то еще ускорить приложение на NodeJS? Пока при тесте длительностью 30 секунд получается обработать ~4M запросов, но это всего около 133 тыс в секунду. Без использования кластера получаем ~1M запросов. Хочется более внушительной цифры :)

Python выдал ~400K
Kotlin выдал ~2.8M
Go выдал ~3M (голый, сейчас уже разгоняют)
server.js
const cluster = require('cluster');
const http = require('http');
const numCPUs = require('os').cpus().length;

if (cluster.isMaster) {
  console.log(`Master ${process.pid} is running`);
  for (let i = 0; i < numCPUs; i++) {
    cluster.fork();
  }
  cluster.on('exit', (worker, code, signal) => {
    console.log(`worker ${worker.process.pid} died`);
  });
} else {
  http.createServer((req, res) => {
    res.end('text');
  }).listen(3000);
  console.log(`Worker ${process.pid} started`);
}

  • Вопрос задан
  • 846 просмотров
Решения вопроса 1
@asd111
Никак. Она же однопоточная. Это ограничение V8 поэтому есть кластер для запуска на нескольких ядрах. Максимум который можно выжать из Nodejs стремится к уровню golang, но правильно написанный golang быстрее.
Если собираете статистику, то попробуйте ещё erlang/elixir.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы