Java Massive MultiPlayer Game Scareability

Я создал массивно многопользовательскую онлайн-игру для Android под названием Infinite Black: https://market.Android.com/details?id=thenefiniteblack.Client

В моем наименьшении я ожидал умеренного роста около 1000 игроков в месяц и нуждающийся в управлении ~ 20 Live TCP / IP Клиенты вершины.

Игра неожиданно возникла взрывной рост с более чем 40 000 новых пользователей через неделю, и усредняет ~ 300 живых соединений одновременно и растут экспоненциально.

Архитектура сервера состоит из 2 потоков на соединение (блокировка чтения / записи), одну нить серверов, чтобы вызвать новые клиенты, и один контроллер, который опросы каждого клиента для новых действий, применяет его к миру игры, затем промывает данные обратно, когда закончите.

Сервер встроен в Java, в котором я не очень хорошо разбираюсь, особенно в ситуации с высокой стрессовой стресс, такой как это. C # действительно испортил меня, когда дело доходит до памяти и управления потоками.

Чтобы добраться до пункта .. Я только что заказал две очень мощные системы для выполнения выделенных игровых серверов и хотите максимизировать использование ресурсов. Многие из информации о конфигурации ресурсов Java доказаны вводящие в заблуждение, неправильные или устаревшие.

В настоящее время я использую -xsss512k в качестве моим аргументом запуска и понимаю, что это диктует выделение размера стека для каждого потока, но я не полностью понимаю, что это может повлечь за собой. Какие инструменты или методы доступны для того, чтобы сказать мне, если я завораживаю отметку и могу масштабировать его? Какую другие аргументы командной строки я должен учитывать?

Новые серверы имеют 16 ГБ ОЗУ и I7-2600K Sandy Bridge 3,4 ГГц-процессоров: какие варианты доступны в конфигурации, чтобы занять все возможное, насколько это возможно? Моя цель - 1200 онлайн клиентов одновременно на сервер (2400 потоков).

Какие неожиданные подводные камни и проблемы я должен быть обеспокоен?

Я прочитал дико противоречивые истории на максимальном количестве потоков: будут ли вещи развалиться, если я пытаюсь нажать 2 400 активных потоков?

Java Похоже, он был разработан для этого типа задачи. Должен ли я рассмотреть возможность миграции сервера на другой язык?

В настоящее время я запускаю сервер в режиме отладки из Eclipse, пока оно в разработке (тьфу ..)

Это мое Eclipse. Conficate:

- Launcher .Xxmaxpermsize 256 м

-xms256m

-xmx1024m

10
задан Peter Lawrey 11 July 2016 в 15:09
поделиться