Улучшение задержки в сети - сайт онлайн-игр
Я использую браузерную онлайн-игру, которая сильно зависит от AJAX/ базы данных, и проблема, с которой я сталкиваюсь, заключается в чрезмерно высокой задержке в часы пик.
Я создал простой пинг AJAX, который проверяет сервер в цикле в секунду, а время выполнения / ответа 5 самых последних пингов усредняется в "Скорость соединения", которая отображается на экране.
В большинстве случаев эта задержка записывается в диапазоне от 100 до 350 мс, в зависимости от скорости интернета, других запущенных веб-страниц клиента и многих других вещей. Однако в часы пиковой нагрузки на моем сервере, а именно в 10:00 -11:00 по восточному стандартному времени, эта задержка становится настолько плохой, что мои функции AJAX перестают работать. Задержка в это время может составлять около 2000 мс, а некоторые люди видят ее до 6800 мс.
Мой вопрос... что было бы наиболее вероятной причиной этого? Это проблема с оборудованием на моем сервере? Разве невозможно создать браузерную игру, работающую исключительно на AJAX? В это время я часто сталкиваюсь с проблемами на самом сервере, когда моя панель управления выдает много ошибок "Не удается выделить память для выбранной задачи", но при запуске free
через SSH даже 10% оперативной памяти не используется.
1 ответ
Вы испытываете конфликт где-то в вашем веб-приложении или базе данных. Это может быть в очень многих местах и поэтому имеет так много возможных решений, что невозможно перечислить их. Некоторые вещи, о которых вы можете подумать:
- Нет доступных потоков для обработки входящих запросов, потому что они выполняют синхронные вызовы к базе данных, которые будут блокировать поток до тех пор, пока база данных не вернется, что увеличит задержку
- Конфликт на уровне базы данных. Используете ли вы разделение для ваших данных для поддержки истинного параллелизма?
- Вы предоставляете статический контент через ваше веб-приложение, которое может быть получено в качестве ресурса с прямой адресацией?
- Вы балансируете нагрузку на свое веб-приложение?
- Используете ли вы кеширование в веб-приложении?
Это немного похоже на "как долго кусок веревки?"
Надеюсь, это поможет некоторым.