Сколько участников сможет обработать чат AJAX на выделенном сервере, прежде чем он будет перегружен и станет медленным? - PullRequest
1 голос
/ 05 июня 2011

Информация о выделенном сервере (на момент запуска сайта) выглядит следующим образом:

ОС: Linux CentOS

Процессор: Intel® Pentium 4 - 3,0 ГГц

RAM: 2 ГБ

Память: 2 х 120 ГБ жестких дисков

Пропускная способность: 500 ГБ в месяц

Чат AJAX имеет индивидуальную кодировку. Он запускается путем отправки и получения команд Javascript в базу данных и из нее, а затем их оценки.

Частота обновления чата, вероятно, будет где-то около 250 мс, хотя ответы здесь могут изменить решение.

Ответы [ 2 ]

0 голосов
/ 05 июня 2011

Если вы хотите реализовать приложение для чата на основе браузера, которое будет работать на относительно дешевом сервере и иметь возможность обслуживать множество пользователей (скажем, 500 одновременно) без сбоев - ваш подход не эффективен.

Причины: использование DB для отправки JS клиентам, которые оценивают код, на самом деле небезопасно.Это также дорого.Это также означает, что на каждую строку чата вам нужно вызывать БД хотя бы один раз.Это подразумевает МНОГО ввода-вывода для СУБД.

На вашем месте я бы проверил Node.js .

Node.js позволяет вамписать серверы чата в JavaScript.Сам JS выполняется не браузером, а сервером.Это чрезвычайно эффективный ввод / вывод.Это также достаточно просто, чтобы позволить неопытному программисту создавать правильные приложения для чата.

0 голосов
/ 05 июня 2011

Использование php для сервера чата не очень хорошая идея. Опрос может дать слишком большую ненужную нагрузку на сервер и плохо масштабируется. На мой взгляд, вы должны переосмыслить всю архитектуру.

  1. Опрос плох для чата - используйте Comet (длинный опрос) вместо
  2. С кометой вам потребуется быстрый HTTP-сервер, который может обрабатывать тысячи одновременных подключений - используйте NGINX
  3. PHP не является хорошим решением для приложения чата - неблокирующее процессное решение намного лучше - посмотрите на Tornado и пример их чата
  4. Отныне вы должны решить, нужно ли вам масштабировать - если вы не можете написать однопоточный сервер поверх торнадо и сохранить все данные в памяти - конечно, вам нужно будет удалить старые ненужные данные. Если вам нужно масштабировать, выберите быстрое масштабируемое хранилище данных, например MongoDB - вам придется опросить базу данных - но это будет один запрос для ВСЕХ клиентов, подключенных к одному экземпляру торнадо, - не для каждого клиента

Facebook использовал (или все еще использует) архитектуру такого типа (используя серверную часть MySQL) для своих нужд

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