Улучшение задержки в сети - сайт онлайн-игр

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

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

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

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

1 ответ

Решение

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

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

Это немного похоже на "как долго кусок веревки?"

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

Другие вопросы по тегам