Половина функционала сайта работает на socket.io и пользователь где бы он не находился подключается к socket.io, но так как это все дело работает в одном потоке в итоге скорость сильно падает на большом количестве подключений.
Есть ли способ как раскидать пользователей по потокам? (Допустим 6 потоков, в каждом потоке 1/6 пользователей)
При этом все они должны иметь доступ к разделяемой памяти (несколько массивов, один с константными данными, один изменяется сам по себе с течением времени, один изменяется подключениями (сокетами))
Спасибо, добрый человек. О существовании Cluster вообще не знал.
Насколько я понял надо взять код из примера cluster, в "else" поместить весь код сокетов, ну и там уже просто стартануть через pm2.
Один только вопрос. Будет использоваться одна область памяти для третьего массива (это массив пользователей из бд, который запрашивается один раз при входе пользователя на сайт, в дальнейшем в массив clients нужного пользователя просто добавляются socket.id, ну и при выходе socket.id убирается из clients пользователя, данные же в массиве модифицируются сокетами, которые указаны в clients, это сделано, чтобы уменьшить кол-во запросов в бд, потребляемую память и убрать неприятную возможность запроса устаревших данных из бд, если один пользователь открыл несколько вкладок)?