Я решил, что хочу исследовать, как лучше всего обрабатывать большой объем трафика с помощью сервера NodeJS, я провел небольшой тест на 2 серверах Digital Ocean, которые имеют 1 ГБ ОЗУ / 2 процессора Код сервера No-Cluster:
// Include Express
var express = require('express');
// Create a new Express application
var app = express();
// Add a basic route – index page
app.get('/', function (req, res) {
res.redirect('http://www.google.co.il');
});
// Bind to a port
app.listen(3000);
console.log('Application running');
Код сервера кластера:
// Include the cluster module
var cluster = require('cluster');
// Code to run if we're in the master process
if (cluster.isMaster) {
// Count the machine's CPUs
var cpuCount = require('os').cpus().length;
// Create a worker for each CPU
for (var i = 0; i < cpuCount; i += 1) {
cluster.fork();
}
// Code to run if we're in a worker process
} else {
// Include Express
var express = require('express');
// Create a new Express application
var app = express();
// Add a basic route – index page
app.get('/', function (req, res) {
res.redirect('http://www.walla.co.il');
});
// Bind to a port
app.listen(3001);
console.log('Application running #' + cluster.worker.id);
}
И я отправил запросы стресс-теста на эти серверы, я исключил, что сервер кластера будет обрабатывать больше запросов, но этого не произошло, оба сервера упали при одинаковой нагрузке, хотя на кластере работали 2 службы узла и 1 служба на другом. -кластер.
Теперь мне интересно, почему? Я сделал что-то не так?
Может быть, что-то еще заставляет серверы достигать точки останова? оба сервера падали при ~800 rps