Рассчитать требования к серверу на основе спецификаций программирования - PullRequest
2 голосов
/ 18 сентября 2009

Вы когда-нибудь сталкивались с чем-то настолько простым в разработке, но не задумывались о требованиях к серверу для вашего проекта? Это мой случай.

Я хочу конкурировать с игровым сайтом, у них есть многопользовательские флеш-игры, такие как покер, рамми, нарды и другие карточные игры, всего 8 игр. Для каждой игры у них есть комнаты и столы.

Я буду использовать Silverlight с сокетами. Мне уже удалось разработать сервер политики, приложение Socket Server с использованием WinForms, приложение Client Socket в Silverlight. У меня есть VPS для тестов, поэтому нет проблем в разработке того, что я хочу, проблема в Как рассчитать требования к серверу, оперативной памяти, пропускной способности, скорости интернета на основе следующих требований:

  1. Сервер должен поддерживать 24 000 пользователей / день или 1000 пользователей / час
  2. В каждой игровой комнате должны быть свои столы, за которыми могут играть пользователи
  3. Пользователи не должны терять оценки, а скорость игры в целом должна быть быстрой

Мне просто интересно, как справиться со следующей ситуацией: если 1000 пользователей подключены через сокет-соединение к комнате, полной таблиц, и один пользователь покидает стол, все 1000 пользователей должны быть обновлены, и пользовательский интерфейс должен отражать изменения. Скажем, я обновлю клиентов, отправив маленькое сообщение размером 100 байт каждому пользователю, оно будет съедать 100 байт * 1000 пользователей = 100 КБ, и это только для 1 изменения пользовательского интерфейса, для 1 игры и для 1 комнаты, а не считая все мои другие игры и комнаты. Кроме того, 1000 итераций, которые отправляют байты клиентам, должны занимать очень много времени.

Я разработчик, но в таких ситуациях не имел опыта. Пожалуйста посоветуй. Номера будут отличными.

Ответы [ 5 ]

4 голосов
/ 18 сентября 2009

Пока вы не создадите и не оптимизируете свои реальные приложения, вы не сможете предсказать многое об оборудовании, необходимом для некоторого уровня производительности.

Сначала вы должны закончить приложения. Тогда вы можете измерить их производительность под нагрузкой. Затем вы можете решить, сколько потратить на какие уровни производительности.

2 голосов
/ 18 сентября 2009

Лучший ответ, который я могу вам предложить, - запустить стресс-тесты и посмотреть, какую нагрузку может поддерживать один сервер. Во время выполнения этих тестов следите за активностью памяти, ввода-вывода, процессора и диска (при необходимости), чтобы понять, какой ресурс исчерпан первым.

Мы разворачиваем наши приложения в облачной инфраструктуре Amazon EC2. Это позволяет нам легко (в течение нескольких минут) добавлять или удалять емкость по мере необходимости. Возможно, стоит подумать о вашей ситуации.

1 голос
/ 18 сентября 2009

Всегда следуйте этим двум правилам

«Первое правило оптимизации программы: не делай этого. Второе правило оптимизации программы (только для экспертов!): Пока не делайте этого ». - Майкл А. Джексон

0 голосов
/ 19 сентября 2009

Сейчас очень сложно догадаться об этих вещах.

С прагматической точки зрения вы, возможно, в конечном итоге захотите взглянуть на: а) услугу облачного хостинга для лучшего масштабирования полосы пропускания для вас, или б) очень опытную хостинговую компанию с полным спектром услуг, которая может помочь вам рассчитать ваши потребности на основании предыдущего опыта.

Отказ от ответственности: я работаю в Rackspace Hosting, который обеспечивает оба перечисленных выше варианта.

0 голосов
/ 19 сентября 2009

Прежде всего вы должны больше думать о том, как и когда отправлять какую информацию каким клиентам. Не каждый клиент должен быть проинформирован о каждом изменении таблицы.

То, что клиенту требуется столько информации, и вам нужно решить, когда и как она будет передана. Также вы должны упаковать информацию в значимые пакеты. То, что происходит за столом, интересно только для этого стола.

Также вам нужно профилировать приложение, чтобы убедиться, что вы знаете, какие ресурсы оно потребляет. Карточные игры не должны съедать столько ресурсов. Но важным моментом является ПЕРВЫЙ, чтобы построить его, и когда у вас есть узкое место, то попытайтесь исправить это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...