Улучшение задержки в сети - сайт онлайн-игр - PullRequest
0 голосов
/ 04 сентября 2011

Я использую онлайн-браузерную игру, которая сильно зависит от AJAX / базы данных, и проблема, с которой я сталкиваюсь, заключается в чрезмерно высокой задержке в часы пик.

Я создал простой пинг AJAX, который проверяет сервер вцикл в секунду, и время выполнения / отклика 5 самых последних пингов усредняется в «скорость соединения», которая отображается на экране.

В большинстве случаев эта задержка записывается в диапазоне от 100 до 350 мсв зависимости от скорости интернета, других запущенных веб-страниц клиента и прочего.Однако в часы пиковой нагрузки на моем сервере, а именно в 10:00 - 11:00 по восточному стандартному времени, эта задержка становится настолько плохой, что мои функции AJAX перестают работать.Задержка в это время может составлять около 2000 мс, а некоторые люди видят, что она достигает 6800 мс.

Мой вопрос: какова наиболее вероятная причина этого?Это проблема с оборудованием на моем сервере?Разве невозможно создать браузерную игру, работающую исключительно на AJAX?В это время я часто сталкиваюсь с проблемами на самом сервере, когда моя панель управления выдает много ошибок «Не удается выделить память для выбранной задачи», но когда я запускаю free через SSH, даже 10% ОЗУ не используется.

1 Ответ

1 голос
/ 04 сентября 2011

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

  1. Нет доступных потоков для обработки входящих запросов, поскольку они выполняют синхронные вызовы к базе данных, которые будут блокировать поток до тех пор, пока база данных не вернется, что увеличит задержку
  2. Конфликт на уровне базы данных.Используете ли вы секционирование для ваших данных для поддержки истинного параллелизма?
  3. Предоставляете ли вы статическое содержимое через веб-приложение, которое можно извлечь как ресурс с прямой адресацией?
  4. Балансируете ли вы нагрузку на свое веб-приложение??
  5. Используете ли вы кеширование в веб-приложении?

Это немного похоже на то, «как долго кусок строки?»

Надеюсь, это поможет некоторым.

...