Как создать искуственную нагрузку?
Всем привет.
Пишу 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 игроков с разных машин, то соединения бы не закрывались |
Нода смело держит и по 1000 пользователй. Оптимизация и только оптимизация! Зачем отдавать весь мир каждый раз? Не проще отдать его при коннекте а после отправлять только координаты играков?
|
А Вы, случайно не в IE тестируете? IE11 открывает максимум 6 сокетов к одному домену (сайту). Google Chrome, Opera - 255 сокетов, FireFox- 200.
Также возможно, что из-за 100%-й загрузки процессора в сокеты не успевает проталкиваться информация (тот же ping/pong) и они закрываются по таймауту. |
Часовой пояс GMT +3, время: 04:52. |