Javascript-форум (https://javascript.ru/forum/)
-   Node.JS (https://javascript.ru/forum/node-js-io-js/)
-   -   Как создать искуственную нагрузку? (https://javascript.ru/forum/node-js-io-js/74078-kak-sozdat-iskustvennuyu-nagruzku.html)

Porolon 11.06.2018 21:35

Как создать искуственную нагрузку?
 
Всем привет.
Пишу 2d онлайн игру на node.js + socket.io
Возникла необходимость протестировать игру на большое кол-во игроков.

Сервер через сокет отдает игровой мир 25 раз в секунд для каждого игрока.

Делаю так:
for(var i = 0; i < 5; i++) {
	var s = io.connect('https://***.ru');
}


На карте появляются 5 дополнительных игроков. Все хорошо работает, браузер нагружает процессор на 50% (если 1 игрок, то 15%).

Проблема возникает когда я пытаюсь подключить в цикле не 5, а 10 игроков. Загрузка процессора браузером возрастает до 100%. И эти соединения не держатся, с течением времени соединения просто закрываются и игроки пропадают с карты.

Вопрос к бывалым, почему так происходит? Не думаю что это VDS сервер не выдерживает (1 ядро, 2 Гб оперативки). Возможно это происходит из-за нагрузки на клиенте, и если бы к серверу подключилось бы 10 игроков с разных машин, то соединения бы не закрывались

stweet 15.06.2018 11:42

Нода смело держит и по 1000 пользователй. Оптимизация и только оптимизация! Зачем отдавать весь мир каждый раз? Не проще отдать его при коннекте а после отправлять только координаты играков?

Маэстро 26.07.2018 11:47

А Вы, случайно не в IE тестируете? IE11 открывает максимум 6 сокетов к одному домену (сайту). Google Chrome, Opera - 255 сокетов, FireFox- 200.
Также возможно, что из-за 100%-й загрузки процессора в сокеты не успевает проталкиваться информация (тот же ping/pong) и они закрываются по таймауту.


Часовой пояс GMT +3, время: 04:52.