Я запускаю узел js и использую модуль кластера. В дочернем процессе я создаю сервер веб-сокетов, а при соединении с веб-сокетом я делаю console.log(process.pid) для каждого соединения с веб-сокетом. Я даже добавил цикл в рабочий поток, чтобы замедлить его, что, по-видимому, так и есть, но он по-прежнему назначает одно и то же ядро каждому клиенту веб-сокета. Я написал сценарий bash для запуска моего html-файла, который открывает одновременные N соединений, чтобы проверить, нормально ли работает модуль кластера. Это проблема с модулем кластера или сервером веб-сокетов?
const os = require('os');
const cluster = require('cluster');
if (cluster.isMaster) {
for (let i = 0; i < os.cpus().length; i++) {
cluster.fork();
}
} else {
const server = require('http').createServer(app);
const WebSocket = require('ws');
let ws_clients = {};
const wss = new WebSocket.Server({ server: server});
wss.on('connection', function connection(ws) {
let h = 0;
for (let i = 0; i < 2e10; i++) {
h++;
}
console.log('handled by:', process.pid);
});
}